P. *_*ris 10 php apache codesign macos-monterey
我在这里更新我的问题,在顶部,所以任何阅读的人都会首先遇到最新的未解决的问题。
为了回应亚历克斯·纳维的建议,我匆忙地更新了我的问题。
的结果:
bash3.2/Users/jnorris$ codesign -dv --verbose=4 "/opt/homebrew/opt/php/lib/httpd/modules/libphp.so"
是我下面的内容,除了:
...
Authority=My Name's CA
...
Run Code Online (Sandbox Code Playgroud)
不只是:
...
Authority=My Name
...
Run Code Online (Sandbox Code Playgroud)
当我将我的第 187 行设置https.conf为:
LoadModule php8_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so "My Name's CA"
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
bash3.2/Users/jnorris$ apachectl -config
[Mon Feb 21 17:26:12.913882 2022] [so:error] [pid 3892] AH06663: Unable to find code signature authority on module at /opt/homebrew/opt/php/lib/httpd/modules/libphp.so that matches authority name "P James Norris's CA" configured on LoadModule directive.
httpd: Syntax error on line 187 of /private/etc/apache2/httpd.conf: Code signing error - not loading module at: /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
Run Code Online (Sandbox Code Playgroud)
我认为这My Name's CA是一个证书,赋予我颁发签名证书的权限My Name,但我不知道这是否正确,以及为什么我收到现在收到的错误消息而不是下面的错误消息。
再次强调,任何人能给我的任何帮助都将不胜感激,因为如果我不尽快解决这个问题,我将把我的服务器降级到 Mac OS 11 Big Sur,我真的不想这样做。
=====
我最近将 Mac mini(M1,2020)升级到 Mac OS Monterey(12.0.1),发现我必须下载 PHP 8.1 并进行代码签名。之前不需要对 PHP 进行代码签名,因此我按照“如何通过使用您自己的证书颁发机构对它们进行签名来在 macOS 中对您的 apache 模块进行未来验证”中的说明进行操作1。但是当我运行时,apachectl configtest我收到以下错误消息:
AH06663: Unable to find code signature authority on module at /opt/homebrew/opt/php/lib/httpd/modules/libphp.so that matches authority name "My Name" configured on LoadModule directive.
httpd: Syntax error on line 187 of /private/etc/apache2/httpd.conf: Code signing error - not loading module at: /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
Run Code Online (Sandbox Code Playgroud)
这就是我的第 187httpd.conf行的样子:
LoadModule php8_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so "my name"
我已经确认lib-up.so存在于/opt/homebrew/opt/php/lib/httpd/modules/.
按照亚历克斯·纳维的建议,我:
bash3.2/Users/jnorris$ codesign -dv --verbose=4 "/opt/homebrew/opt/php/lib/httpd/modules/libphp.so"
Executable=/opt/homebrew/Cellar/php/8.1.1/lib/httpd/modules/libphp.so
Identifier=libphp
Format=Mach-O thin (arm64)
CodeDirectory v=20400 size=117087 flags=0x0(none) hashes=3654+2 location=embedded
VersionPlatform=1
VersionMin=720896
VersionSDK=721664
Hash type=sha256 size=32
CandidateCDHash xxxx
CandidateCDHashFull xxxx
Hash choices=sha256
CMSDigest=xxxx
CMSDigestType=2
Executable Segment base=0
Executable Segment limit=13058048
Executable Segment flags=0x0
Page size=4096
CDHash=xxxx
Signature size=2064
Authority=***My Names's CA***
Signed Time=Dec 25, 2021 at 11:28:37 AM
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=84
Run Code Online (Sandbox Code Playgroud)
我已将哈希值更改为xxxx并将我的证书名称更改为My Name's CA.
我的 now 的第 187 行内容https.conf如下:
LoadModule php8_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so "xxxx"
但我仍然收到错误:
bash3.2/Users/jnorris$ apachectl configtest
[Mon Jan 24 07:38:09.095804 2022] [so:error] [pid 14290] AH06663: Unable to find code signature authority on module at /opt/homebrew/opt/php/lib/httpd/modules/libphp.so that matches authority name "xxxx" configured on LoadModule directive.
httpd: Syntax error on line 187 of /private/etc/apache2/httpd.conf: Code signing error - not loading module at: /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
Run Code Online (Sandbox Code Playgroud)
我看到有人在“Unable to codesign PHP v7.4 with Apache on Big Sur” 2中提出了类似的问题,但是该帮助请求已经持续了 2 个月,没有得到回复,并且她/他收到了错误消息:不是。
感谢任何人可以提供的任何帮助。
小智 8
您可以通过检查模块上的协同设计来准确找出匹配的权限名称。
codesign -dv --verbose=4 "/path/to/ModuleName.so"
Run Code Online (Sandbox Code Playgroud)
这将产生包含如下行的结果:
Authority=Developer ID Application: Example Name (XYZ12345678)
Run Code Online (Sandbox Code Playgroud)
因此,您可以将“Authority =”之后的所有内容放入模块加载指令中:
例如。
LoadModule php8_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so "Developer ID Application: Example Name (XYZ12345678)"
Run Code Online (Sandbox Code Playgroud)
小智 2
您是否在 httpd.conf 文件中的 PHP LoadModule 指令中的模块路径后面添加了代码签名证书名称?例如,在 httpd.conf 文件的第 187 行中,现在应该在模块后面包含证书名称:
/opt/homebrew/opt/php/lib/httpd/modules/libphp.so 你的证书名称