Answers:
不要惊慌!如果您担心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模块安装在某个位置,然后在系统的Apache配置中添加或调整此行:
LoadModule php5_module /path/to/php/and/the/module/for/apache2/libphp5.so
只需调整路径(libphp5.so
Apache用来解析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.so
Apache模块重命名为libphp535.so
名称中的版本号,以便可以在其中进行参考,然后将其命名为PHP 5.1.6(具有GD库支持)模块,libphp516-gd.so
这样我就知道了也是。这样,我就可以在系统上同时使用它们。
而且,就像我刚开始所说的那样,命令行中使用的PHP版本与Apache PHP模块完全没有关系。因此,可以在系统上安装任意数量的不同版本的Apache PHP模块。只需调整配置并重新启动Apache,您就应该全力以赴使用Apache指定的PHP版本。
如果在使用Apache的Ubuntu 14.04上从PHP5升级到PHP7时遇到此问题,这是对我有帮助的(贷项到此处):
在Apache上禁用PHP5模块:
sudo a2dismod php5
现在启用PHP7:
sudo a2enmod php7.1
为了反映更改,需要重新启动Apache:
sudo systemctl restart apache2
如果尝试从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而不是默认版本。
如果我可以加上我的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
解决此问题的步骤。首先,它向您显示哪个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
为最新版本的php创建环境变量路径,例如:C:\ wamp64 \ bin \ php \ php7.2.4现在将您以前的php版本文件夹.php5.6.35更改为另一个数字php5.6.354.。然后检查php -v您的wamp服务器和CLI PHP将相同