Ubuntu下PHP版本控制的常用方法
这是Ubuntu原生支持的轻量级方法,适合需要快速切换系统全局PHP版本的场景。
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.4 php7.4-cli php7.4-fpm php8.0 php8.0-cli php8.0-fpm
update-alternatives设置CLI和FPM的全局默认版本:sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 100
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.0 50
sudo update-alternatives --config php # 交互式选择默认版本
sudo a2dismod php7.4 # 禁用PHP 7.4模块
sudo a2enmod php8.0 # 启用PHP 8.0模块
sudo systemctl restart apache2 # 重启Apache
phpbrew允许用户在用户目录下编译安装多个PHP版本,互不干扰,适合需要自定义编译选项的场景。
curl -L -o phpbrew.phar https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar
sudo mv phpbrew.phar /usr/local/bin/phpbrew
chmod +x /usr/local/bin/phpbrew
.bashrc):echo '[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc' >> ~/.bashrc
source ~/.bashrc
phpbrew known
phpbrew install 7.4 +default # +default设置为默认版本
switch命令切换全局版本,或local命令为项目设置版本:phpbrew switch 7.4 # 切换全局版本
cd /path/to/project && phpbrew local 8.0 # 项目级版本设置(生成.phpbrew目录)
Docker通过容器技术实现PHP版本的完全隔离,适合需要严格环境一致性的项目。
docker pull php:7.4-cli
docker pull php:8.0-cli
docker run -it --rm php:7.4-cli php -v # 运行PHP 7.4
docker run -it --rm php:8.0-cli php -v # 运行PHP 8.0
Dockerfile定义项目环境,或在docker-compose.yml中配置多容器服务(如PHP-FPM+MySQL+Nginx),实现开发环境与生产环境的一致性。phpenv基于Ruby开发,适合习惯Ruby工具链的开发者,提供全局/本地版本切换功能。
git clone https://github.com/phpenv/phpenv.git ~/.phpenv
echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(phpenv init -)"' >> ~/.bashrc
source ~/.bashrc
sudo apt install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev
phpenv install 7.4.22
phpenv install 8.0.9
phpenv global 7.4 # 全局默认版本
phpenv local 8.0 # 当前目录使用PHP 8.0
phpenmod(如sudo phpenmod mysqli)启用对应版本的模块。.phpversion文件(内容为版本号),配合工具(如phpbrew、phpenv)实现项目级版本控制。