因此,经过两天的努力,弄清楚为什么 Macports Apachehttpd
突然决定停止工作,最终归结为以下原因:
$ sudo bash -x /opt/local/apache2/bin/apachectl -k start
ARGV='-k start'
HTTPD=/opt/local/apache2/bin/httpd
test -f /opt/local/apache2/bin/envvars
. /opt/local/apache2/bin/envvars
test x '!=' x
DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib
export DYLD_FALLBACK_LIBRARY_PATH
LYNX='lynx -dump'
STATUSURL=http://localhost:80/server-status
ULIMIT_MAX_FILES=
'[' x '!=' x ']'
ERROR=0
'[' 'x-k start' = x ']'
case $ARGV in
/opt/local/apache2/bin/httpd -k start
ERROR=1
exit 1
这就是房间里的大象,ERROR=1
意味着什么吗?
我运行了调试并得到了上述相同的错误:
$ sudo bash -x /opt/local/apache2/bin/apachectl -k start -e Debug -E /dev/stdout
本地 Mac Apache 没有返回任何错误并httpd
正常启动,它给出以下输出:
$ sudo bash -x /usr/sbin/apachectl -k start
ACMD=-k
ARGV='-k start'
HTTPD=/usr/sbin/httpd
test -f /usr/sbin/envvars
. /usr/sbin/envvars
test x '!=' x
DYLD_LIBRARY_PATH=/usr/lib
export DYLD_LIBRARY_PATH
LYNX='lynx -dump'
STATUSURL=http://localhost:80/server-status
ULIMIT_MAX_FILES=
LAUNCHCTL=/bin/launchctl
LAUNCHD_JOB=/System/Library/LaunchDaemons/org.apache.httpd.plist
'[' x '!=' x ']'
ERROR=0
'[' 'x-k start' = x ']'
case $ARGV in
/usr/sbin/httpd -k start
ERROR=0
exit 0
这可能是我最后一次尝试了,两天后我愿意放弃!
答案1
ERROR=1 表示 bash 脚本正在将环境变量“ERROR”设置为值 1。
apachectl 基本上执行以下操作:
$HTTPD $ARGV
ERROR=$?
exit $ERROR
问题是/opt/local/apache2/bin/httpd -k start
退出时退出代码为 1。您应该弄清楚这是为什么。您说您运行了sudo /opt/local/apache2/bin/httpd -k start -e Debug -E /dev/stdout
但没有看到任何错误。退出代码是什么?
答案2
我记得之前在 MAMP 上调用的模块unique_id_module
阻止了它的启动。所以我禁用了它,httpd.conf
现在 Macports Apache 启动时没有任何错误。
像这样取消注释即可:
#LoadModule unique_id_module modules/mod_unique_id.so