繁体   English   中英

为什么 phpinfo() 显示的版本与 php -v 不同?

[英]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 天)

TL; 博士

由于 fpm 和您的网络服务器的运行服务状态, php -v设置可能与web-server内的phpinfo()不同。 也许您需要重新启动php-fpm和/或您的web-server (apache、nginx、..)。

长版:命令行

每次在终端中执行脚本时,诸如php -vphp -iphp 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 )

长版:为什么我的 phpinfo() 使用了错误的 php 版本?

由于我们现在知道我们可以在单个操作系统上运行多个不同版本的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM