У меня есть сервер 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();
?>
Правильно ли отображает страницу?