Как отобразить ошибки cgi-bin вместо 500 в Apache?
Я заинтересован в получении ошибок из скриптов cgi-bin внутри браузера, таких как ошибки PHP.
Сценарий cgi может быть Perl, Python, Ruby, двоичным или что-то еще. Меня не интересует конкретное решение - я ищу что-то, что должно работать с любым сценарием.
Я хочу использовать на сервере разработки / тестирования не в производстве. Я знаю, что в производстве вы не должны отображать error_log для пользователя.
Я ищу скрипт для замены ErrorDocument внутри Apache. У меня был один в прошлом, но я потерял его.
4 ответа
В основном, как говорит радиус, ловите и отображайте ошибку, а не позволяйте ей пройти. В Perl, см. Модуль Carp: http://search.cpan.org/~nwclark/perl-5.8.9/lib/Carp.pm
В прошлом я размещал небольшой скрипт на своем сервере разработки, который привязывал файл журнала к браузеру. Он не заменил ошибку 500, но я полагаю, вы могли бы перенаправить Apache на такой скрипт при обнаружении ошибки 500.
Я думаю, что использование оболочки может сделать это. Напишите скрипт, который всегда возвращает 0, чтобы apache никогда не делал ошибку 500 для него. В этом сценарии запустите истинный сценарий для выполнения и перехватите STDOUT и STDERR, чтобы иметь возможность отправить их обратно клиенту.
Не совсем то, что вы спросили, а как насчет того, чтобы просто выставлять логи через псевдоним?
Alias /var/log/httpd /apache-logs
<Directory /var/log/httpd>
# access control options, fancy indexing options, etc
</Directoy>