首页 > 解决方案 > 如何为 Apache 2.4 (OSX) 安装模块?

问题描述

我用 Homebrew 安装了 apache。当我开始默认安装时,我收到此错误:

httpd:/usr/local/etc/httpd/httpd.conf 第 85 行的语法错误:无法将 lib/httpd/modules/mod_auth_basic.so 加载到服务器中:dlopen(/usr/local/var/www/lib/httpd/ modules/mod_auth_basic.so, 10): 找不到图片

我把未找到的模块注释掉了,但似乎所有模块都不见了,尤其是像 mod_auth_basic 这样有用的模块。查看使用 homebrew 安装 apache 的教程,我注意到它在我的计算机上安装的路径与教程中的路径大不相同。

我如何安装这些模块(最好是使用一个多合一的包,而不是一次一个)?

编辑:

在查看错误消息一秒钟后,我意识到这dlopen()是使用我的 ServerRoot 作为模块的基础。代替

dlopen(/usr/local/var/www/lib/httpd/modules/mod_auth_basic.so)

它应该是

dlopen(/usr/libexec/apache2/mod_auth_basic.so

那么如何将模块加载器指向正确的目录呢?

编辑:

我解决了模块未加载的问题,但我仍然很想知道如何添加模块。

标签: apachehomebrewmacos-high-sierra

解决方案


如果您的模块目录是/usr/libexec/apache2,那么您可能需要禁用 SIP 才能将模块文件 ( *.so) 复制到那里。以下讨论可能会有所帮助:https ://apple.stackexchange.com/questions/193368/what-is-the-rootless-feature-in-el-capitan-really

无论如何,如果您想要更自由地安装 httpd,您可能需要下载并构建源代码。它非常简单,您可以将其安装在任何不受保护的目录中(建议的默认设置/usr/local/apache2很好),因此您无需经历禁用 SIP 的麻烦。


推荐阅读