跑步时我遇到了这个问题
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/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.例如,这是一个最近的WebKit补丁,他们将其添加到允许插件加载:https://bugs.webkit.org/show_bug.cgi?id = 183252.同样,这里是Mozilla人们谈论他们如何启用这个(和其他)属性:https://bugzilla.mozilla.org/show_bug.cgi?format = default&id = 1470597.
不幸的是,我不做macOS开发(我只是在 macOS 上进行开发)而且我完全不知道如何将它应用到内置的Apache,对不起.
在这一点上,我有点厌倦了每一个主要的macOS更新,因为我的所有httpd设置都很麻烦,并且通常很痛苦(它很少但它仍然很烦人),所以我正在做我多年前应该做的事情:停止使用内置的-in httpd与OS/X一起使用,只需使用Homebrew httpd.
下面是一些指导,我发现关于设立家酿的httpd(和禁用内置的MacOS的httpd),这是很简单的,你不必跟着所有关于多个PHP版本的方向等:https://getgrav.org/博客/ MacOS的-莫哈韦-Apache的多的PHP版本
如果有人可以弄清楚如何在内置的httpd中禁用库验证,或者如果有一些方法可以在mod_passenger.so上提供签名(似乎不太可能,因为Homebrew和gem乘客都需要从源代码构建),不需要破解内置的httpd.但我个人认为最好的解决方案是完全摆脱它并使用Homebrew版本.
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |