Иногда пользовательские скрипты или зависают, или хотят соединиться с чем-то запрещенным в файрволе, 
или интерпретатор неожиданно вылетает, не передав заголовок Content-type, что приводит к ошибке 500. 
Для того, чтобы разобраться в причине, попробуем отладить скрипты со стороны сервера, 
не залезая в код php. Сначала придется изменить конфигурацию apache, чтобы php работало через suphp, 
а не через модуль mod_php5. Я не буду рассказывать, как это делается. Главное, кроме обычного, 
"неотладочного", надо добавить свой обработчик в suphp.conf:    x-httpd-php_debug=php:/usr/local/bin/php-cgi.sh
А вот содержимое этого скрипта /usr/local/bin/php-cgi.sh. Поставьте ему права 755. 
Видно, что он запускает отладчиком php с перенаправлением отладочной информации в файл.
    #!/bin/bash
    /usr/bin/strace /usr/bin/php5-cgi $@ 2>/tmp/debug
Не забудьте добавить этот обработчик в конфиг apache , это делается строкой
    suPHP_AddHandler x-httpd-php_debug
Затем в .htaccess нужного сайта допишите
    
    AddHandler x-httpd-php_debug .php
В результате после повторной загрузки сайта появится файл /tmp/debug, в который будет добавляться
отладочная информация о работе php нужного сайта. В это время лучше ограничить посещение сайта, 
разрешив только 1 IP адрес, чтобы отладочной информации не было чрезмерно. 
Обычно будет достаточно имени системного вызова, который приводит к прекращению выполнения скрипта. 
Можно поиграться с параметрами strace.
URL: 
Обсуждается: http://www.opennet.dev/tips/info/1759.shtml