Mik*_*sen 3 php code-signing apache2.4 xdebug-3 macos-monterey
我正在设置一台新的 MacBook(Monterey 12.2.1 芯片 Apple M1 Pro),并使用自制程序安装了 PHP 7.4。我将 PHP 配置为作为 MacOS (Apache/2.4.51) 附带的 Apache2 服务器的模块运行。我立即遇到了麻烦,因为在我对其进行代码签名之前,Gatekeeper 不允许我将 php 作为自制程序中的 apache 模块运行。我对它进行了协同设计:
codesign --sign "Mike Andersen" --force --keychain ~/Library/Keychains/login.keychain-db /opt/homebrew/opt/php@7.4/lib/httpd/modules/libphp7.so
之后 PHP 就完美运行了。然后我用 PECL 安装了 xdebug: arch -x86_64 sudo pecl install xdebug
当我从命令行检查它时,一切看起来都正确:
php -v
PHP 7.4.28 (cli) (built: Feb 28 2022 07:33:39) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies
with Xdebug v3.1.3, Copyright (c) 2002-2022, by Derick Rethans
php --ini
Configuration File (php.ini) Path: /opt/homebrew/etc/php/7.4
Loaded Configuration File: /opt/homebrew/etc/php/7.4/php.ini
Scan for additional .ini files in: /opt/homebrew/etc/php/7.4/conf.d
Additional .ini files parsed: /opt/homebrew/etc/php/7.4/conf.d/20-ext-opcache.ini,
/opt/homebrew/etc/php/7.4/conf.d/99-xdebug.ini
Run Code Online (Sandbox Code Playgroud)
但从浏览器加载失败 - 浏览器列出了 99-xdebug.ini 文件:
Additional .ini files parsed /opt/homebrew/etc/php/7.4/conf.d/20-ext-opcache.ini, /opt/homebrew/etc/php/7.4/conf.d/99-xdebug.ini
Run Code Online (Sandbox Code Playgroud)
但关于 xdebug 就没有其他的了。我检查了 apache 错误日志并看到:
Failed loading /opt/homebrew/lib/php/pecl/20190902/xdebug.so:
dlopen(/opt/homebrew/lib/php/pecl/20190902/xdebug.so, 0x0009):
tried: '/opt/homebrew/lib/php/pecl/20190902/xdebug.so'
(code signature in <8E9B311F-7332-3812-89A8-91BA8FB71682> '/opt/homebrew/lib/php/pecl/20190902/xdebug.so'
not valid for use in process: mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?)),
'/usr/lib/xdebug.so' (no such file)
Run Code Online (Sandbox Code Playgroud)
我也尝试签署 xdebug.so 文件:
codesign --sign "Mike Andersen" --force --keychain ~/Library/Keychains/login.keychain-db /opt/homebrew/lib/php/pecl/20190902/xdebug.so
/opt/homebrew/lib/php/pecl/20190902/xdebug.so: replacing existing signature
Run Code Online (Sandbox Code Playgroud)
并重新启动apache,但在apache日志中仍然出现相同的错误。我也尝试过重新签署 PHP,但没有帮助。我还尝试禁用网守:
sudo spctl --master-disable
Run Code Online (Sandbox Code Playgroud)
这也没有什么区别。
我整个早上都在谷歌上搜索这个问题,但找不到任何关于如何解决这个问题的信息。现在肯定有人看到了这个,所以我希望你们中的一个人能够帮助兄弟。预先感谢您可以提供的任何帮助。
看起来解决此问题的最简单方法是不使用 Apple 随 Mac OS 附带的 Apache。
我用brew安装了apache:
brew install apache2
并更新了brew的httpd.conf文件以使用端口80,并指向Exactly。这。相同的。我用于 Apple 的 Apache 的 Libphp7.so 文件。无需重新编译,无需协同设计,什么都没有。然后我停止并禁用Apple的Apache:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo apachectl stop
Run Code Online (Sandbox Code Playgroud)
最后,重新启动brew的apache:
brew services restart httpd
重新加载我的 phpinfo 文件,所有 xdebug 的优点都在那里。第一次尝试!
我认为这里的根本问题是Apple编译Apache时坚持协同设计,然后使协同设计变得不透明和困难。我仍然很想知道这个问题是否有真正的解决方案,但在那之前,使用 Brew 的 Apache 就可以了。
如果您需要 PHP 协同设计方面的帮助,这是我使用的指南: https: //www.simplified.guide/macos/apache-php-homebrew-codesign
| 归档时间: |
|
| 查看次数: |
1816 次 |
| 最近记录: |