我根本不明白为什么:
php -v
(or) php -m
返回:PHP 7.0
和phpinfo()说我使用的是PHP 5.
这很奇怪,任何想法?
我正在使用Ubuntu和Nginx。下面是一个版画屏幕:
答案 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版本。