为什么phpinfo()显示的版本与php-v不同?
我通过brew安装php。使用brew安装PHP。我的为什么phpinfo()显示的版本与php-v不同?,php,macos,apache,Php,Macos,Apache,我通过brew安装php。使用brew安装PHP。我的php cli版本是7.2 但是,如果我在我的服务器上使用phpinfo(),我会得到php版本7.1 如果我在终端中使用php-v,我会得到php版本7.2 免责声明:我希望在复兴徽章中添加这一广泛的答案。(第一个答案得分为2分或2分以上的问题提出后30天以上回答) TL;博士 php-v设置可能与web服务器内部的phpinfo()不同,这是因为fpm和web服务器的运行服务状态不同。也许您需要重新启动php fpm和/或web服务器(
php cli
版本是7.2
- 但是,如果我在我的服务器上使用
,我会得到php版本7.1李>phpinfo()
- 如果我在终端中使用
,我会得到php版本7.2php-v
- 免责声明:我希望在复兴徽章中添加这一广泛的答案。(第一个答案得分为2分或2分以上的问题提出后30天以上回答)
TL;博士
php-v
设置可能与web服务器内部的phpinfo()
不同,这是因为fpm和web服务器的运行服务状态不同。也许您需要重新启动php fpm
和/或web服务器(apache、nginx,…)
长版本:命令行
基于命令行的调用,如php-v
或php-i
或php-test。每次在终端中执行脚本时,php
都会读取配置、选项和参数
这意味着如果您在操作系统中更新php,那么您将在终端会话中获得最新版本
注意:根据路径变量的不同,您可能会得到较旧的版本。
这是什么意思?即使在操作系统上更新php版本,也可能会有一个旧的终端会话链接到旧的php二进制文件
下面是一个例子:我是OSX用户,通过安装php。当前php
链接到php@7.3
。下面是我验证哪个版本在哪里运行的方法。为此,我使用php
我在本地系统上安装了多个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服务器
为此,我将参考php文档第7点。apache还允许我们为PHP加载不同的模块
编辑httpd.conf以加载PHP模块。[……]
对于PHP7:
loadmodulephp7\u module modules/libphp7.so
对于PHP5:
LoadModule php5_module modules/libphp5.so
由于您正在从PHP7.1升级到PHP7.2,因此可能没有任何更改,但您的Web服务器仍在运行旧的链接版本的PHP
在这种情况下,重新启动apache Web服务器应该会有所帮助,以便它能够正确地获取新的二进制文件
请让我知道这是否有助于解决您的问题。对于所有其他读者:如果您认为我的解释中缺少什么或有什么错误,请给我一个评论。因为php CLI可能不同于php CGI。PHP GCI用于web应用程序,PHP CLI用于终端脚本您的服务器是什么?默认apache来自mac或使用MAMP/XAMPP/etc?这不是因为phpinfo()
。这是因为您使用的是不同的解释器。我如何更新我的apache版本?我使用apache服务器,而不是MAMP等。。现在我运行默认的apache2服务器。@voodooSHAA请参见
$ 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 )
$ /usr/local/opt/php@7.2/bin/php -v
PHP 7.2.20 (cli) (built: Jul 5 2019 12:56:54) ( NTS )