Назад | Перейти на главную страницу

Apache выходит из строя с ошибкой 500

У меня есть сервер Apach Http, который начал выходить из строя для одного из своих виртуальных хостов с ошибкой 500. Я сразу перешел к журналам, вызвал проблему, и в результате появилась нормальная запись в журнале доступа без упоминания в журналах ошибок.

Это работает PHP, поэтому я запускаю

php index.php

в каталоге приложения, и оно работает нормально. Это не проблема PHP или, скорее, маловероятно.

Я установил LogLevel на отладку, и в журналах ошибок я вижу следующее:

[Sat Jul 04 08:41:10 2009] [error] [client 84.72.21.12] File does not exist: /var/www/example.com/public/favicon.ico, referer: http://example.com/

и в журнале доступа:

84.72.21.12 - - [04/Jul/2009:08:40:29 -0400] "GET / HTTP/1.1" 500 - "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.18 (KHTML, like Gecko) Version/4.0.1 Safari/530.18"
84.72.21.12 - - [04/Jul/2009:08:40:29 -0400] "GET /favicon.ico HTTP/1.1" 404 361 "http://example.com/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.18 (KHTML, like Gecko) Version/4.0.1 Safari/530.18"

Есть идеи, что еще попробовать?

Это была ошибка PHP. Включение отображения ошибок PHP показало это, и причина, по которой я этого не видел, когда запускал скрипт вручную, заключается в том, что я запускал его как root, а ошибка заключалась в отсутствии разрешения на запись временных данных в каталог.

Убедитесь, что в пути к папке до php нет файла .htaccess. То есть, если путь /var/www/html/a/b/test.php. Убедитесь, что в папках / var / www / html, / var / www / html / a, / var / www / html / a / b нет файла .htacces. Если есть файлы .htaccess, переименуйте их во что-нибудь другое и попробуйте еще раз.

В большинстве случаев я получаю 500 ошибок из-за плохого файла .htaccess и с тех пор не отображаются в простых ls, поэтому трудно понять, что они являются источником проблемы.

Вы вызываете PHP через libapache2-mod-php (mod_php) или через что-то вроде FastCGI? Не могли бы вы сообщить нам версии, которые вы установили, ваш дистрибутив, проверить права доступа к файлу / каталогу и попробовать;

tail -f /var/log/apache2/access.log /var/log/apache2/error.log

Или измените, если ваши журналы находятся в другом месте. Затем попробуйте зайти на сайт в браузере, а также что вы получите, объединив test.php с:

<?php
  phpinfo();
?>

Правильно ли отображает страницу?