【问题标题】:phpinfo() not updating to terminal version?phpinfo() 没有更新到终端版本?
【发布时间】:2020-02-03 06:57:26
【问题描述】:

我的 phpinfo() 显示版本为 7.1.23。但是当我在终端上执行 php -v 时,它显示的版本是 7.3.10。如何使 phpinfo 版本与 CLI/终端相同?我在这个问题上按照用户 corretge 的步骤操作: different result between phpinfo.php and php-v认为可以解决问题,但事实并非如此。我还将这些行添加到我的 httpd.conf 文件中:

LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
<FilesMatch .php$>
    SetHandler application/x-httpd-php
</FilesMatch>

我在最后一个 LoadModule (etc etc etc) 文本下方添加了所有上述代码。我的 httpd.conf 的位置是:

/etc/apache2/httpd.conf

所以无论出于何种原因做这一切都行不通。我一开始是通过 Curl 安装的,它没有更新 phpinfo 版本,刚才通过 Homebrew 做了同样的事情,同样 - 没有更新结果。

我使用的是 macOS High Sierra 10.13.6

当我运行这个命令时:

/usr/local/bin/php -v

结果是:

PHP 7.3.10

当我运行这个命令时:

/usr/bin/php -v

结果是:

PHP 7.1.23

【问题讨论】:

  • 你的机器上安装了两个不同版本的php
  • php-cli 和 apache 模块使用不同的 php 可执行文件,它们是分开安装的。您需要为 apache 更新 php 模块。libapache2-mod-php*
  • @frz3993 对不起,我错过了您的回复,所以您是说我只是为 apache 更新了 php 模块,然后 phpinfo() 将更新到最新版本?如果是这样,我该怎么做?所以我只需在终端上输入libapache2-mod-php* 这一行?
  • 因为控制台使用 PHP CLR,所以更改该配置。

标签: php apache terminal


【解决方案1】:

尝试查看您的/usr/bin/php/usr/local/bin/php 实际调用的是什么程序:

ll /usr/bin/php
ll /usr/local/bin/php

很可能,就像@Always Sunny 所说,您会发现您的机器上安装了两个版本的 PHP。换句话说,这些链接正在调用不同的可执行文件。

【讨论】:

  • 是的,我之前解决了这个问题,这是因为我在错误的文件夹中,但无论如何,谢谢,我只会将你标记为最佳答案
【解决方案2】:
LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
<FilesMatch .php$>
    SetHandler application/x-httpd-php
</FilesMatch>

httpd.conf 文件中的 LoadModule 指令指向 php71 路径。您可能希望将其更改为 php73 路径。另外,正确设置处理程序:

SetHandler application/x-httpd-php73

如果你只有一个 php 版本,那么 x-httpd-php 就可以了。 重新启动 apache 以确保加载新配置。

您可能还需要进行下面提到的其他设置。我不确定这是否有必要,但您可以尝试一下。

如果你想强制 web 请求到特定的 PHP 版本,你有 2 个选项:

1。 php.ini 修改

在您的 php_info() 输出中,您会看到已加载的配置文件 - php.ini 路径。转到该路径并添加

AddHandler application/x-httpd-php73 .php

2。在您网站的 .htaccess 文件中添加以下指令。

切换到 PHP 7.3

AddHandler application/x-httpd-php73 .php

切换到 PHP 7.1

AddHandler application/x-httpd-php71 .php

详情

PHP 允许您加载多个 php.ini 文件,并在特定文件夹中覆盖它们。

当您使用 phpinfo() 运行 PHP 脚本时,它会将最近的 php.ini 加载到该文件。它可能是上述文件夹层次结构中存在的根级别或任何其他 php.ini。

当您从终端运行时,它会从您的环境变量中注册的路径运行 PHP。当您从终端运行时,我怀疑 apache 配置会出现,因此更改 apache 配置中的任何内容都不会影响终端执行。 Apache PHP 模块和 PHP 命令行二进制是互不干扰的两个不同的东西。


如果你想强制你的终端使用你想要的版本,有两种选择

1。更改环境变量以在特定版本中运行 PHP

printenv PATH

这将有您的 PHP 的路径。删除它并放置新的

export PATH=/usr/local/php73/bin:$PATH 

2。更改 PHP 别名

您也可以使用别名。将以下内容添加到您的 .bash_profile 文件中。

alias php='/usr/local/php73/bin/php'

这与添加到 .bash_profile 时的导出路径相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    相关资源
    最近更新 更多