php -v和phpinfo()之间的不同结果

时间:2015-10-13 16:54:16

标签: php unix ubuntu phpinfo

我根本不明白为什么:

php -v
(or) php -m

返回:PHP 7.0

和phpinfo()说我使用的是PHP 5.

这很奇怪,任何想法?

我正在使用Ubuntu和Nginx。下面是一个版画屏幕:

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:4)

这并不奇怪。 php -v运行php-cli,后者又会读取不同的ini文件。 phpinfo()由您的网络服务器评估,网络服务器会读取特定于网络服务器的ini文件。

对于Ubuntu,它们是:/etc/phpX/apache2/php.ini/etc/phpX/cli/php.ini,对于nginx,在您的情况下,它使用php-fpm,其配置位于/etc/phpX/fpm/php.ini

另外,在你的情况下,PHP7可能是编译或从其他一些repo中提取的。如果你想让nginx拿起PHP7,你需要编译或安装php7-fpm或者那些行中的东西。 YMMV取决于你如何将PHP7加入你的系统。

要了解其工作原理 - 在您的网络文件夹中的文件系统的任何位置创建一个文件,例如,名为test.php,其中包含以下内容:

<?

phpinfo();

?>

然后尝试运行:

# php test.php

然后从http://path.to.your.site.com/path/to/test.php

的网络浏览器访问此文件

您将看到cli PHP将报告版本7.0,而nginx将继续报告PHP5。

答案 1 :(得分:1)

您需要更改默认的php版本。

sudo update-alternatives --set php /usr/bin/php7.2

答案 2 :(得分:0)

如果你在使用Apache的Ubuntu 14.04上从PHP5升级到PHP7时遇到这个问题,这里有什么帮助我(信用转为here):

在Apache上禁用PHP5模块:

sudo a2dismod php5

现在启用PHP7:

sudo a2enmod php7.1

要反映更改,需要重新启动Apache:

sudo systemctl restart apache2

答案 3 :(得分:0)

如果您的系统是这样的:

  • ubuntu
  • NGNIX
  • php-fpm

因此,您应该更改ngnix的配置:

根据您的地址在/etc/ngnix/sites-available nano中进行更改,并更改fpm版本:

  location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;

然后重新启动您的ngnix

$ sudo service nginx restart

现在在cli上使用phpinfo()php -v检查您的php版本。