为什么网页中的 phpinfo() 显示 5.6 版本,而命令行中的 php -v 显示 7.3?



阅读了以前的答案并了解我必须安装两个版本,但找不到 5.6 可能的位置。 我更改了/etc/bin/php 以指向我使用 brew 安装的版本 7.3。 我更新了/etc/apache2/httpd.conf 以使用 php@7.3。 我重新启动了服务器,以确保它会从httpd.conf开始apache读取。 然而,当我从网页运行phpinfo时,它从5.6开始,不包括有关服务器管理员的http.conf信息,但它说它正在使用http.conf。 由于某种原因,sudo apachectl 重新启动将不起作用,说明该端口已在使用中。 我删除了/usr/local/php5 链接(将其重命名为 php5.bak (,这样它就不会被使用。

我还应该看什么?

当你使用php -v命令时,你使用的php-cli可以是不同的版本。 此外,如果您安装了多个版本,则可能需要禁用旧版本的apache模块。

sudo a2dismod php5 // disable php5.6
sudo a2enmod php7.3 // enable php7.3

可能有许多不同的事情导致了它,但我打赌系统安装了MacOS Apache。尝试从启动端终止它:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

我找到了一个"部分"答案。 我在mac-mini上运行Mac OS X 10.12.6作为Web服务器。 apache 配置文件的位置是:

/Library/Server/web/config/apache2/httpd_server_app.conf

因此,所有的/etc/apache2/httpd.conf 和其他建议,虽然它们在许多 unix 甚至 OS X(非服务器(上工作正常,其中有人使用 brew 进行安装,但它们在这里不起作用。 我在上面的文件中进行了一些更改,并验证了在转到服务器应用程序,在服务菜单中选择网站,然后单击将开/关按钮切换为关闭,然后返回打开后,服务器重新启动。 所有使用不同 apache2ctl 重启等的尝试都不起作用。

我仍然有些困惑,我没有看到我输入的服务器管理员显示在phpinfo.php显示中,但其他一些更改确实如此。

我的下一个任务,欢迎提出建议,是如何更改 http_server_app.conf 文件,以便它将使用我的 php7,而不是 php5,可以从命令行获得。 尝试更改:

LoadModule php5_module libexec/apache2/libphp5.so
#LoadModule php7_module libexec/apache2/libphp7.so

不能工作,因为找不到 libphp7.so。 我现在正在寻找它。 在会议文件中的某一点,我发现:

<IfModule php5_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>

一旦我找到并在上面使用它,我是否需要为php7_module拥有一个这样的?

最新更新