插件窝 干货文章 linux如何安装多个版本php并切换

linux如何安装多个版本php并切换

PHP phpbrew 版本 安装 743    来源:    2025-04-26

在Linux上安装多个PHP版本并切换的方法

在Linux系统上安装和管理多个PHP版本可以通过以下几种方法实现:

方法一:使用PPA仓库(Ubuntu/Debian)

  1. 添加Ondřej Surý的PHP PPA仓库

    sudo apt install software-properties-common
    sudo add-apt-repository ppa:ondrej/php
    sudo apt update
    
  2. 安装多个PHP版本

    sudo apt install php5.6 php5.6-fpm php5.6-cli php5.6-mysql
    sudo apt install php7.0 php7.0-fpm php7.0-cli php7.0-mysql
    sudo apt install php7.4 php7.4-fpm php7.4-cli php7.4-mysql
    sudo apt install php8.0 php8.0-fpm php8.0-cli php8.0-mysql
    
  3. 切换PHP CLI版本

    sudo update-alternatives --config php
    

    然后选择你要使用的版本。

  4. 切换PHP-FPM版本: 修改Nginx/Apache配置指向不同的PHP-FPM socket:

    /var/run/php/php7.4-fpm.sock
    /var/run/php/php8.0-fpm.sock
    

方法二:使用phpbrew工具

  1. 安装phpbrew

    curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
    chmod +x phpbrew
    sudo mv phpbrew /usr/local/bin/phpbrew
    
  2. 初始化phpbrew

    phpbrew init
    echo '[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc' >> ~/.bashrc
    source ~/.bashrc
    
  3. 安装多个PHP版本

    phpbrew install 7.4.0 +default
    phpbrew install 8.0.0 +default
    
  4. 切换PHP版本

    phpbrew use php-7.4.0
    phpbrew use php-8.0.0
    

方法三:使用Docker容器

  1. 拉取不同PHP版本的Docker镜像

    docker pull php:7.4-cli
    docker pull php:8.0-cli
    
  2. 运行特定版本

    docker run -it --rm php:7.4-cli php -v
    docker run -it --rm php:8.0-cli php -v
    

方法四:手动编译安装

  1. 下载不同PHP版本源码

    wget https://www.php.net/distributions/php-7.4.0.tar.gz
    wget https://www.php.net/distributions/php-8.0.0.tar.gz
    
  2. 编译安装到不同目录

    tar -xzvf php-7.4.0.tar.gz
    cd php-7.4.0
    ./configure --prefix=/opt/php/7.4.0
    make && sudo make install
    
  3. 通过修改PATH切换版本

    export PATH=/opt/php/7.4.0/bin:$PATH
    

注意事项

  1. 使用多个PHP版本时,确保每个版本的扩展也正确安装
  2. Web服务器配置需要指向正确的PHP-FPM socket或CGI路径
  3. 不同PHP版本的php.ini文件位于各自安装目录中
  4. 使用update-alternatives可以更方便地管理多个版本

以上方法可以根据你的具体需求选择使用,PPA方法最简单,phpbrew最灵活,Docker最隔离,手动编译最可控。