Apache 无法在 Mac OS Mojave 上加载 PHP 未签名扩展

Apache 无法在 Mac OS Mojave 上加载 PHP 未签名扩展

升级到 MacOS Mojave 后,Apache 无法再加载 PHP 扩展。使用任何扩展时,我都会在 Apache 日志中收到以下错误;似乎 Apple 在 MacOS Mojave 上通过 Apache 实现了库验证。这显然使得使用 Apache 加载未签名的二进制文件变得不可能。

有没有什么解决方法不需要禁用 MacOS 的 SIP?

Failed loading //usr/local/php/extensions/xdebug.so:  dlopen(//usr/local/php/extensions/xdebug.so, 9): no suitable image found.  Did find:
        //usr/local/php/extensions/xdebug.so: code signature in =(//usr/local/php/extensions/xdebug.so) 
not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? 

代码必须至少是临时签名的。//usr/local/php/extensions/xdebug.so: stat() 失败,errno=22

答案1

线程在 Mojave 上安装 列出了几个独立的解决方法:

  1. 从您的计算机上卸载 apache 和 php,并清理所有残留
  2. 从 homebrew 安装 apache 和 php (suneet64 回答)
  3. /etc/apache2/httpd.conf在行末添加

    LoadModule php7_module libexec/apache2/libphp7.so
    
  4. 仍然在/etc/apache2/httpd.conf取消注释第 545 行,内容是

    Include /private/etc/apache2/other/*.conf
    

答案2

对我有帮助的是:

brew update

brew upgrade

结果我得到信息

==> [email protected]
To enable PHP in Apache add the following to httpd.conf and restart Apache:
    LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so

    <FilesMatch \.php$>
        SetHandler application/x-httpd-php
    </FilesMatch>

Finally, check DirectoryIndex includes index.php
    DirectoryIndex index.php index.html

The php.ini and php-fpm.ini file can be found in:
    /usr/local/etc/php/7.3/

我很困惑,因为有几个 httpd.conf,但最终在我的情况下是:/usr/local/etc/httpd/httpd.conf

因此我按照 homebrew info 所述进行了编辑:1 添加以下几行:

LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so
    
        <FilesMatch \.php$>
            SetHandler application/x-httpd-php
        </FilesMatch>

并找到并更改了 DirectoryIndex 部分,如下所示:

<IfModule dir_module>
    #DirectoryIndex index.html
    DirectoryIndex index.php index.html
</IfModule>

现在 php 可以正常工作了。希望这能有所帮助

相关内容