You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS BigSur系统中Homebrew安装的PHP无法加载PDFLib扩展(代码签名无效)求助

解决macOS Big Sur上PDFlib PHP扩展代码签名无效的问题

我之前帮朋友处理过一模一样的macOS安全机制限制问题,结合你的环境(Homebrew安装的PHP 7.4.23、Big Sur 11.2.3),给你几个可行的解决方案:

方案一:给PHP二进制禁用Library Validation(推荐)

这个方法只针对PHP进程放开限制,不会影响系统全局安全设置:

  • 先找到Homebrew PHP的二进制路径:CLI版本一般是/usr/local/bin/php,如果用的是FPM则是/usr/local/sbin/php-fpm
  • 执行以下命令给PHP添加禁用Library Validation的权限(需要sudo):
    sudo codesign --remove-signature /usr/local/bin/php
    sudo codesign --sign - --entitlements - /usr/local/bin/php <<EOF
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>com.apple.security.cs.disable-library-validation</key>
        <true/>
    </dict>
    </plist>
    EOF
    
  • 最后重启PHP服务:
    brew services restart php@7.4
    

注意:如果之后通过Homebrew更新了PHP,需要重新执行上述命令——因为更新会替换PHP二进制文件,之前的权限设置会被清空。

方案二:手动给PDFlib扩展签名

如果不想修改PHP的权限,可以给扩展文件添加合法的自签名:

  1. 创建自签名证书:
    • 打开「钥匙串访问」应用,点击顶部菜单「证书助理」->「创建证书」
    • 证书名称填个好记的(比如"My Code Signing"),证书类型选「代码签名」,勾选「让我覆盖这些默认值」
    • 后续步骤保持默认,最后把证书存储到「登录」钥匙串
  2. 给扩展签名:
    执行命令用刚才创建的证书签名扩展:
    codesign --sign "My Code Signing" /usr/local/lib/php/ext/php_pdflib.so
    
  3. 重启PHP服务测试即可

方案三:调整系统安全设置(不推荐,仅作最后手段)

临时允许扩展加载

打开「系统偏好设置」->「安全性与隐私」->「通用」,如果看到提示“php_pdflib.so被阻止使用”,直接点击「允许」就能临时解决问题。

关闭System Integrity Protection(SIP)

这会大幅降低系统安全性,只有前两个方案都无效时再尝试:

  1. 重启Mac,按住Command + R进入恢复模式
  2. 打开「终端」,输入:
    csrutil disable
    
  3. 重启Mac后测试扩展是否正常
  4. 问题解决后,记得回到恢复模式执行csrutil enable重新启用SIP

内容的提问来源于stack exchange,提问作者Sebastian F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 07:37:46