Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么phpinfo()显示的版本与php-v不同?_Php_Macos_Apache - Fatal编程技术网

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

为什么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服务器(

我通过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服务器(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 )