我在运行时遇到这个问题
httpd -t
httpd: Syntax error on line 545 of /private/etc/apache2/httpd.conf: Syntax error on line 1 of /private/etc/apache2/other/passenger.conf: Cannot load /Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/b
uildout/apache2/mod_passenger.so into server: dlopen(/Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so, 10): no suitable image found. Did find:\n\t/Users/sbaidon/.rv
m/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so: code signature in (/Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so) not valid for use in p
rocess using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.\n\t/Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passen
ger.so: stat() failed with errno=22
乘客安装很好。
我也遇到了这个问题:问题是 macOS Mojave 附带的内置 httpd 已打开库验证,这意味着它加载的任何模块都必须经过正确签名。不幸的是,mod_passenger.so 没有签名,因此加载失败。实际上,很多人在 macOS Mojave 上加载 Apache 模块时都遇到这个问题(尤其是在测试版期间),一些示例参考:
https://github.com/GrahamDumpleton/mod_wsgi/issues/357 https://github.com/GrahamDumpleton/mod_wsgi/issues/357
https://github.com/phpredis/phpredis/issues/1406 https://github.com/phpredis/phpredis/issues/1406
我相信可以在某处设置一个 plist 来授予 httpd 禁用库验证(com.apple.security.cs.disable-library-validation)的权利,如下所述https://developer.apple.com/documentation/security/com_apple_security_cs_disable-library-validation https://developer.apple.com/documentation/security/com_apple_security_cs_disable-library-validation。例如,这是最近的一个 WebKit 补丁,他们添加了它以允许插件加载:https://bugs.webkit.org/show_bug.cgi?id=183252 https://bugs.webkit.org/show_bug.cgi?id=183252。同样,Mozilla 人员正在谈论他们需要如何启用此(和其他)属性:.
不幸的是,我不做 macOS 开发(我只是做开发onmacOS),我完全不知道如何将其应用到内置的 Apache,抱歉。
在这一点上,我有点厌倦了每次重大的 macOS 更新都会削弱我所有的 httpd 设置,并且通常会很痛苦(这种情况很少见,但仍然很烦人),所以我正在做几年前就应该做的事情:停止使用内置的-in httpd 随 OS/X 一起提供,只需使用 Homebrew httpd。
这是我发现的一些关于设置 Homebrew httpd(并禁用内置 macOS httpd)的说明,它非常简单,您不必遵循all有关多个 PHP 版本等的说明:https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions
如果有人能弄清楚如何在内置 httpd 中禁用库验证,或者是否有某种方法可以在 mod_passenger.so 上提供签名(似乎不太可能,因为 Homebrew 和 gem Passenger 都需要从源代码构建),那么您就不需要不需要废弃内置的httpd。但我个人认为最好的解决方案是完全放弃它并使用 Homebrew 版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)