【问题标题】:MacOS HighSierra - How to tell Apache to use PHP 7.2.9 instead of PHP 7.1.16MacOS HighSierra - 如何告诉 Apache 使用 PHP 7.2.9 而不是 PHP 7.1.16
【发布时间】:2019-01-31 06:14:10
【问题描述】:

在终端中,如果我输入“php -v”,我会得到: —— PHP 7.2.9 (cli) (内置: Aug 22 2018 02:58:50) (NTS) 版权所有 (c) 1997-2018 PHP 集团 Zend Engine v3.2.0,版权所有 (c) 1998-2018 Zend Technologies 使用 Zend OPcache v7.2.9,版权所有 (c) 1999-2018,由 Zend Technologies 提供 php -v in Terminal ——

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

phpMyAdmin 告诉我: 网络服务器

• 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

WebServer infos in phpMyAdmin ——

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

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

——

你能帮我详细的过程吗?

非常感谢您的帮助!!

【问题讨论】:

    标签: apache phpmyadmin gd php-7.2 macos-high-sierra


    【解决方案1】:

    首先,确认 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
    

    【讨论】:

      猜你喜欢
      • 2017-10-05
      • 1970-01-01
      • 2023-03-18
      • 2012-10-27
      • 2015-08-16
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多