php -v 和 phpinfo(); 返回不同的版本

php -v 和 phpinfo(); 返回不同的版本

我想在 Ubuntu 服务器上使用 php 8.1 目前它适用于 php 7.4.30

lsb_release -a

返回

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.6 LTS
Release:    18.04
Codename:   bionic

我按照教程执行了这些命令

sudo apt update
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.1
sudo apt-get install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath
sudo systemctl restart apache2

现在当我这样做时php -v我看到:

PHP 8.1.18 (cli) (built: Apr 14 2023 04:39:07) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.18, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.18, Copyright (c), by Zend Technologies

当我做

sudo update-alternatives --config php

 Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/php8.1   81        auto mode
  1            /usr/bin/php7.3   73        manual mode
  2            /usr/bin/php7.4   74        manual mode
  3            /usr/bin/php8.1   81        manual mode

sudo update-alternatives --config phar对于和 来说相同sudo update-alternatives --config phar.phar ,选择 php 8.1。

但是,我的应用程序(CMS)仍然使用 php 7.4,我还用一个简单的 php 文件进行了测试phpinfo();

我还可以检查什么?

答案1

PHP CLI 与 PHP Apache 模块不同。

请参阅此答案了解更多信息

因此解决方案是通过以下命令禁用旧的 PHP 模块并启用新的 PHP 模块来告诉 Apache 使用已安装的 PHP 8.1 版本。

sudo a2dismod php7.4
sudo a2enmod php8.1
sudo service apache2 restart

答案2

可能您需要检查 php.ini。

在 phpinfo() 页面中,您将看到您的 Web 服务器正在使用哪个 php.ini。如果您看到的是 7.4,您的 php.ini 路径可能类似于:

.../7.4/apache2/php.ini

只需找到您的 php v8.1 安装的 php.ini 文件并更改 Web 服务器中的设置以使其指向它。

相关内容