Итак, после 2 дней попыток выяснить, почему Macports Apache httpd вдруг решил перестать работать, в конце концов все сводилось к следующему:

$ 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

Это, наверное, мой последний удар в этом, через 2 дня я готов сдаться!

2 ответа2

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 но не видите ошибок. Какой был код выхода?

1

Я вспомнил ранее на MAMP, что модуль с именем unique_id_module препятствовал его запуску. Поэтому я отключил его в httpd.conf и теперь Macports Apache запускается без ошибок.

Просто раскомментируйте это так:

#LoadModule unique_id_module modules/mod_unique_id.so

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .