phpinfo()和php -v显示不同版本的PHP


18

我想知道php我使用的是哪个版本,所以我写了标准脚本:

phpinfo();

这给了我

PHP version 5.6.10

正确的 PHP版本需要我的应用程序。当我在终端中尝试时:

php -i

要么

php -v

它告诉我:

PHP version 5.3.2

我不需要 然后我尝试了:

which php

它告诉我:

/usr/bin/php

现在我很困惑我正在使用哪个版本的PHP。这些文件已上传到托管网站,我无法对httpd.conf或的配置文件进行任何更改php.ini

Answers:


22

简短的答案。

不要惊慌!如果您担心Apache服务器使用的PHP版本,phpinfo()则始终应该注意输出。Apache PHP模块和PHP命令行二进制文件是两个互不干扰的不同事物。

实际上,您可以编译并加载要与Apache一起使用的各种PHP版本,只要您调整Apache使其正确加载即可。在Apache解析PHP页面的情况下,PHP命令行界面将永远不会起作用。

PHP的命令行版本仅用于命令行特定的任务,而Apache的PHP模块将永远不会碰,使用或需要。

更长的答案。

你这样说:

我想知道php我使用的是哪个版本,所以我写了标准脚本:

phpinfo();

这给了我PHP版本5.6.10- 正确需要我的应用程序的PHP版本。当我在终端中尝试时:

php -i or php -v   

它显示了我不需要的PHP版本5.3.2。

可从命令行获得的PHP版本与作为模块加载的PHP版本无关。这些是完全独立的东西。

因此,如果您担心您的Web应用程序正在使用哪个版本的PHP, phpinfo()显示5.6.10版本,那么您要/需要的就是100%正确。

PHP的命令行版本是一个完全独立的系统项目。因此,唯一重要的是phpinfo()

如果出于某种原因您想与Apache一起使用不同版本的PHP,那么您所需要做的就是将已编译的Apache PHP模块安装在某个位置,然后在系统的Ap​​ache配置中添加或调整此行:

LoadModule php5_module    /path/to/php/and/the/module/for/apache2/libphp5.so

只需调整路径(libphp5.soApache用来解析PHP 的路径),然后重新启动Apache,您就可以开展业务了。

例如,有一次我不得不从源代码编译PHP 5.1.6版本(支持GD库),以便在运行PHP 5.3.5的Ubuntu 12.04计算机上使用。在服务器的PHP模块加载文件中:

/etc/apache2/mods-available/php5.load

我有这样的行:

# LoadModule php5_module        /usr/lib/apache2/modules/libphp535.so
LoadModule php5_module        /usr/lib/apache2/modules/libphp516-gd.so

请注意如何注释掉其中一行,libphp535.so而另一libphp516-gd.so注释不注释?我所做的就是将默认的PHP 5.3.5 libphp5.soApache模块重命名为libphp535.so名称中的版本号,以便可以在其中进行参考,然后将其命名为PHP 5.1.6(具有GD库支持)模块,libphp516-gd.so这样我就知道了也是。这样,我就可以在系统上同时使用它们。

而且,就像我刚开始所说的那样,命令行中使用的PHP版本与Apache PHP模块完全没有关系。因此,可以在系统上安装任意数量的不同版本的Apache PHP模块。只需调整配置并重新启动Apache,您就应该全力以赴使用Apache指定的PHP版本。


24

如果在使用Apache的Ubuntu 14.04上从PHP5升级到PHP7时遇到此问题,这是对我有帮助的(贷项到此处):

在Apache上禁用PHP5模块:

sudo a2dismod php5

现在启用PHP7:

sudo a2enmod php7.1

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

sudo systemctl restart apache2

如果php.ini不同,这可能会使项目崩溃
KawaiKx

也保证了PHP库安装了新版本,我的意思是GD,mcrypt的,XML等
korwalskiy

2

如果尝试从Web服务器运行PHP代码,则使用的版本是phpinfo()= 5.6.10报告的版本。

您的服务器显然已安装了多个版本的PHP,并且在登录并php在命令行上运行时,您会获得安装在/ usr / bin / php中的旧版本。

一台服务器可以有许多版本的PHP,您的似乎也有。

如果您需要手动执行与Web服务器相同的PHP,则需要查找其他版本。尝试运行以下命令:

/usr/local/bin/php -v
/opt/local/bin/php -v
/opt/bin/php -v

其中之一可能显示与您的Web服务器具有相同版本的PHP,当您确定它是哪个版本时,可以使用该PHP而不是默认版本。


0

如果我可以加上我的2美分...

我正在升级Nextcloud版本。当我运行升级过程时,我必须以“ sudo php”作为apache用户,但是由于apache用户默认运行的php CLI版本太旧,因此它拒绝运行。但是,phpinfo(); 在我的服务器上显示了最新安装的php版本。

我意识到这是因为/home/apache/.bashrc文件中的PATH变量设置为我在服务器上安装的php的第一个版本,并且再也没有更新过(我总是从Github上的源代码编译/安装php )

解决方案:

当您在Web服务器上更新php并想确保以apudo用户sudo方式使用的CLI php版本是最新版本时,请不要忘记在该用户的.bashrc文件中进行更改,如下所示:

PATH=$PATH:/var/www/html: /usr/local/php7.1.32/bin export PATH


-1

解决此问题的步骤。首先,它向您显示哪个PHP版本。

php -v

现在,您将需要一个PHP路径,如果不知道,则可以与您的PHP路径的托管支持联系。就我而言

/opt/php71/bin/php

现在,是时候在终端中运行此命令了。

alias php='/opt/php71/bin/php'

这会将您的PHP版本更改为PHP 7.1。如果要将其更改为7.2,可以尝试

alias php='/opt/php72/bin/php'

大功告成 验证

php -v

-3

为最新版本的php创建环境变量路径,例如:C:\ wamp64 \ bin \ php \ php7.2.4现在将您以前的php版本文件夹.php5.6.35更改为另一个数字php5.6.354.。然后检查php -v您的wamp服务器和CLI PHP将相同

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.