[an error occurred while processing this directive]

Отладка php скриптов на стороне сервера
Иногда пользовательские скрипты или зависают, или хотят соединиться с чем-то
запрещенным в файрволе,
или интерпретатор неожиданно вылетает, не передав заголовок 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.
 
07.09.2008 , Автор: Pavel Piatruk
Ключи: strace, php, debug / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / PHP / Серверная часть и интерпретатор

[an error occurred while processing this directive]

[an error occurred while processing this directive]