首页 > 解决方案 > MacOS HighSierra - 如何告诉 Apache 使用 PHP 7.2.9 而不是 PHP 7.1.16

问题描述

在终端中,如果我输入“php -v”,我会得到: —— PHP 7.2.9 (cli) (built: Aug 22 2018 02:58:50) (NTS) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.9, Copyright (c) 1999-2018, by Zend Technologies php -v in Terminal ——</p>

在 Safari 中,如果我输入“localhost/phpinfo.php”(包含行:的文件),我得到: —— Safari 中的 PHP 版本 7.1.16 phpinfo() 输出 ——</p>

phpMyAdmin 告诉我:Web 服务器

• Apache/2.4.33 (Unix) PHP/7.1.16
• Database client version: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $
• PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
• PHP version: 7.1.16

phpMyAdmin中的WebServer信息 ——</p>

如何告诉 Apache 使用 7.2.9 而不是 7.1.16?

我的目标是在 PHP 编程时摆脱这个错误(是的,我是新手):致命错误:未捕获错误:调用 /Users/David/Sites/graphic_example.php:7 中未定义的函数 imagettfbbox() 堆栈跟踪: #0 {main} 在第 7 行的 /Users/David/Sites/graphic_example.php 中抛出

——</p>

你能帮我详细的程序吗?

非常感谢你的帮助!!

标签: apachephpmyadmingdphp-7.2macos-high-sierra

解决方案


首先,确认 PHP7.2 的安装路径。在大多数情况下,它应该是/usr/local/opt/php@7.2,但可能会有一些差异,如果您不确定,请检查 .*shrc(* = your shell, eg .zshrc, .bashrc) 文件,它应该有一行PATH="/usr/local/opt/php@7.2/bin.

其次,复制这一行(在我的情况下):usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so根据我在第一步中提到的内容,您可能需要更改此行中的某些内容以适应您遇到的情况(例如不同的路径名)。

第三,编辑您的 Apache 配置文件:(sudo vi /etc/apache2/httpd.conf 另外,这里可能会有一些差异,但不应该有太多差异)。然后,找到该行:LoadModule php7_module libexec/apache2/libphp7.so。这是原始的 PHP7 模块,也就是 7.1.XX 模块。我们需要通过在这一行的开头添加一个来注释掉它#,使它成为#LoadModule php7_module libexec/apache2/libphp7.so.

最后,我们将添加一个新行LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so,路径应该来自第二步。

所有的事情都完成后,我们可以sudo apachectl configtest先运行以确保一切正常。然后,运行sudo apachectl restartphpinfo();应该会显示您分配的正确 PHP 版本。

但是,这可能无法成功解决您的问题。还有一些问题需要解决:需要设置PHP配置,需要设置并运行PHP-FHM。

因此,您可以通过具有比较功能的编辑器轻松比较两个php.ini文件(/etc/php.ini/usr/local/etc/php/7.2/php.ini),以确保新文件已设置为“正常”状态。

另一个是设置PHP-FPM,因为内置的PHP已经有PHP-FPM功能,也就是说新的也应该开启这个功能,否则,可能一切都不顺利。我们需要通过注释/取消注释或添加以下行再次修改 Apache 配置文件,您应该注意到 'php7_module' 再次被注释掉,这是正常做法。

#LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache2/mod_proxy_fcgi.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule rewrite_module libexec/mod_rewrite.so
Include /private/etc/apache2/extra/httpd-vhosts.conf
<FilesMatch .php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

修改后记得重启Apache服务器。然后,运行这些命令,或者只运行最后一个命令并重新启动您的 Mac,然后一切都应该像往常一样:

sudo /usr/local/opt/php@7.2/sbin/php-fpm --fpm-config /usr/local/etc/php/7.2/php-fpm.conf
sudo cp /usr/local/opt/php@7.2/homebrew.mxcl.php@7.2.plist /Library/LaunchDaemons/homebrew.mxcl.php@7.2.plist

推荐阅读