我的 Ubuntu 22.04 系统上安装了多个 PHP 版本 (8.1/8.2/8.3)。我尝试使用命令在它们之间切换sudo update-alternatives --config PHP
。但是,我遇到一个问题:CLI 版本更改成功,但当我在浏览器中访问我的项目 URL 时,Apache 服务器上的 PHP 版本保持不变。
我尝试过各种解决方案,包括:
sudo update-alternatives --set php /usr/bin/php${version}
sudo a2dismod php8.1
sudo a2enmod php7.2
sudo service apache2 restart
sudo update-alternatives --set php /usr/bin/php7.2
我还重新启动了 FPM,但这些解决方案似乎都不起作用。如果您能提供任何关于导致此问题的原因以及如何解决此问题的见解,我将不胜感激。我的操作系统是 Ubuntu 22.04。
答案1
CLI、FPM 和 Apache PHP 模块的 PHP 版本是用于不同目的的不同工具。无法一次性更改所有默认设置。
更改默认的 PHP FPM 版本
使用 PHP FPM 时,sudo a2enmod
不会执行任何操作,因为它被 所使用mpm_prefork
。要更改 Apache 运行时使用的默认 PHP FPM 版本,请mpm_event
执行以下操作:
sudo a2disconf php8.1-fpm
sudo a2enconf php8.2-fpm
sudo service apache2 restart
另外,请检查您的 vhosts 配置中的/etc/apache2/sites-available
指令SetHandler
。
更改默认 PHP CLI 版本
您尝试的update-alternatives
是更改默认 PHP CLI 版本的正确方法。例如:
sudo update-alternatives --set php /usr/bin/php8.2
确保您已经php-cli
安装了相应的包:
sudo apt install php8.2-cli
编辑正确的php.ini
您要考虑的另一件事是,每个文件都使用不同的php.ini
文件。例如,对于 PHP 8.2,您将拥有:
/etc/php/8.2/fpm
- FPM 使用的配置文件/etc/php/8.2/cli
- CLI 使用的配置文件/etc/php/8.2/apache2
- Apache 使用时使用的配置文件mpm_prefork