[英]Why phpinfo() shows a different version than php -v?
我通过 brew 安装 php。 用 brew 安装 PHP。 我的php-cli
版本是7.2
phpinfo()
,我会得到 php 版本 7.1。php -v
,我会得到 php 版本 7.2。免责声明:我将这个希望广泛的答案添加为复兴徽章的一部分。 (在作为第一个回答得分 2 或更多的问题后回答超过 30 天)
由于 fpm 和您的网络服务器的运行服务状态, php -v
设置可能与web-server
内的phpinfo()
不同。 也许您需要重新启动php-fpm
和/或您的web-server
(apache、nginx、..)。
每次在终端中执行脚本时,诸如php -v
或php -i
或php test.php
等基于命令行的调用都会读取您的配置、选项和参数。
这意味着如果您在操作系统中更新 php,那么您将在终端会话中获得最新版本。
注意:根据您的 PATH 变量,您仍然可能获得旧版本。
这是什么意思? 即使您在操作系统上更新了 php 版本,您可能仍然有一个旧的终端会话,它链接到旧的 php 二进制文件。
这是一个示例:我是 OSX 用户,并通过brew安装了 php。 当前php
链接到php@7.3
。 这是我验证哪些版本在何处运行的方法。 为此,我正在使用哪个php.ini 文件。
$ which php
/usr/local/opt/php@7.3/bin/php
$ php -v
PHP 7.3.11 (cli) (built: Oct 24 2019 11:29:42) ( NTS )
// or the equivalent "absolute path" example
$ /usr/local/opt/php@7.3/bin/php -v
PHP 7.3.11 (cli) (built: Oct 24 2019 11:29:42) ( NTS )
我在本地系统上安装了多个 php 版本。 我可以单独运行它们。 下面是一个例子:
$ /usr/local/opt/php@7.2/bin/php -v
PHP 7.2.20 (cli) (built: Jul 5 2019 12:56:54) ( NTS )
由于我们现在知道我们可以在单个操作系统上运行多个不同版本的 php,让我们深入研究运行phpinfo()
基于 Web 服务器的脚本。
安装新的 php 版本后,您的二进制文件将被新版本替换。 惊人的! 但是……我正在运行的 Web 服务器如何得到通知?
为此,我将参考Unix 系统上的 php 文档Apache 2.x Point 7 。 此外,apache 允许我们为 PHP 加载不同的模块。
编辑您的 httpd.conf 以加载 PHP 模块。 [...]
对于 PHP 7:
LoadModule php7_module modules/libphp7.so
对于 PHP 5:
LoadModule php5_module modules/libphp5.so
由于您是从 PHP 7.1 升级到 PHP 7.2,因此可能没有变化,但您的网络服务器仍在运行旧的 php 链接版本。
在这种情况下,重新启动 apache 网络服务器应该会有所帮助,以便它可以正确获取新的二进制文件。
请让我知道这是否能帮助您解决问题。 对于所有其他读者:如果您认为缺少某些内容或我的解释有误,请通过评论告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.