phpinfo()中的PHP版本与ubuntu服务器上的版本不匹配

yyyllmsg  于 2023-06-20  发布在  PHP
关注(0)|答案(4)|浏览(204)

我更新了我的php版本到8.1,在/etc/php中我有两个目录:8.0和8.1 -我不确定是否以及如何摆脱8.0?
然而,我最担心的是,sudo php -v确实会像预期的那样返回:

PHP 8.1.2 (cli) (built: Jan 24 2022 10:42:33) (NTS)

但是,如果我在脚本中使用phpinfo(),它将返回PHP Version 8.0.15。我错过了什么?为了在我的脚本中使用当前的PHP版本,我应该做些什么?
编辑:
sudo a2dismod php8.0给出Module php8.0 already disabled,而sudo a2enmod php8.1返回:

Considering dependency mpm_prefork for php8.1:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Considering conflict php5 for php8.1:
Module php8.1 already enabled
eimct9ow

eimct9ow1#

您需要重新配置Apache服务器以使用所需的PHP版本。检查加载的Apache配置文件,例如httpd.conf或您的操作系统特定的配置文件。
您需要通知ApacheWeb服务器使用您安装的PHP 8.1版本。
如果您使用 Debian 或类似的操作系统,您可以使用以下命令禁用旧的PHP模块并启用新的PHP模块。

sudo a2dismod php8.0
sudo a2enmod php8.1
6fe3ivhb

6fe3ivhb2#

正如这个答案中所记录的,如果你停止并重新启动Apache,它将从磁盘加载最新的PHP版本。

bnlyeluc

bnlyeluc3#

sudo a2dismod php8.0
sudo a2dismod php8.1
sudo a2dismod mpm_prefork php8.0
sudo a2dismod mpm_event php8.0
sudo a2dismod mpm_worker php8.0
sudo a2enmod php8.1
//I know, it still displays notifications about the conflicts
sudo systemctl restart apache2
php -v
5vf7fwbs

5vf7fwbs4#

我不知道为什么这个问题没有得到妥善解决。
我正在使用不同的PHP项目,有不同的PHP版本,因此我在本地使用ppa:ondrej/php有多个PHP版本。
在理想情况下,CLI和Apache2应该引用相同的PHP确认文件,但Apache2有自己的配置文件。

CLI和FPM配置文件不同,因此CLI和Apache PHP版本不同。
service--status-all
上面的命令将列出Linux中的所有服务状态,我们可以看到类似于下面的结果

[ + ]  php7.4-fpm
 [ + ]  php8.0-fpm
 [ + ]  php8.1-fpm
 [ + ]  php8.2-fpm

这就是问题所在-运行多个PHP FPM。
要解决此问题-例如在Apache2中保持PHP 8.1运行

// disable unnecessary fpm
sudo a2disconf php7.4-fpm;  
sudo a2disconf php8.0-fpm;  
sudo a2disconf php8.2-fpm;  
// enable expected fpm 
sudo a2enconf php8.1-fpm;

现在在CLI中,php -v将返回php8.1,Apache phpinfo();也将显示php8.1
我正在使用一些bash脚本来使生活变得简单。

php74(){
sudo update-alternatives --set php /usr/bin/php7.4; 
sudo a2dismod php8.0; 
sudo a2dismod php8.1;
sudo a2dismod php8.2;
sudo a2disconf php8.0-fpm; 
sudo a2disconf php8.1-fpm;
sudo a2disconf php8.2-fpm; 
sudo a2enmod php7.4; 
sudo a2enconf php7.4-fpm;
systemctl restart apache2
}

php80(){
sudo update-alternatives --set php /usr/bin/php8.0; 
sudo a2dismod php7.4; 
sudo a2dismod php8.1;
sudo a2dismod php8.2;
sudo a2disconf php7.4-fpm; 
sudo a2disconf php8.1-fpm;
sudo a2disconf php8.2-fpm; 
sudo a2enmod php8.0;
sudo a2enconf php8.0-fpm;
systemctl restart apache2
}

php81(){
sudo update-alternatives --set php /usr/bin/php8.1; 
sudo a2dismod php7.4; 
sudo a2dismod php8.0;
sudo a2dismod php8.2;
sudo a2disconf php7.4-fpm; 
sudo a2disconf php8.0-fpm;
sudo a2disconf php8.2-fpm; 
sudo a2enmod php8.1;
sudo a2enconf php8.1-fpm;
systemctl restart apache2
}

php82(){
sudo update-alternatives --set php /usr/bin/php8.2; 
sudo a2dismod php7.4; 
sudo a2dismod php8.0; 
sudo a2dismod php8.1;
sudo a2disconf php7.4-fpm; 
sudo a2disconf php8.0-fpm;
sudo a2disconf php8.1-fpm; 
sudo a2enmod php8.2;
sudo a2enconf php8.2-fpm;
systemctl restart apache2
}

在终端上,我正在运行php74php80php81php82命令来设置CLI和Apache2中的php版本。

相关问题