apache - 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>
你能帮我详细的程序吗?
非常感谢你的帮助!!
解决方案
首先,确认 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 restart
,phpinfo();
应该会显示您分配的正确 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
推荐阅读
- lisp - SBCL - 循环函数中的“非法函数调用”
- c++ - 如何输出一个字符**
- excel - 如何使用 excel 电源查询附加双引号(“”)?
- python - 如何在模块中包含 *.py 以外的文件?
- graphviz - graphViz/dot:调整节点位置和边缘形状
- python - `hash -r 2` 有什么作用?
- nginx - 无法以非 root 身份运行 nginx 容器
- django - 如何在 Django 中放置随机选择选项?
- javascript - ReactJS如何在状态具有特定值时运行API调用
- elasticsearch - 如何将存储在elasticsearch中的多个微服务jaeger指标导出到prometheus