Предупреждения PHP вызывают остановку скрипта на IIS под управлением FastCGI
Мы переходим на новый сервер под управлением Windows 2003 и IIS 6. Когда мой PHP-код запускается, он имеет предупреждение на определенной строке (которое я ожидаю в данный момент, но скоро исправлю). Однако, когда он попадает в предупреждение, он немедленно останавливает обработку и возвращает ошибку 500 в заголовке HTTP. Обычно я ожидаю, что PHP выведет предупреждение, но продолжаю обрабатывать скрипт.
Есть ли что-то в конфигурации для IIS, FastCGI или PHP, что возвращало бы 500 ошибки, когда PHP выдает предупреждение?
Поясню: я не хочу подавлять предупреждения; я хочу, чтобы они отображались. Я не хочу, чтобы скрипт останавливал обработку предупреждений.
3 ответа:
Выяснил проблему.
log_errors
в php.ini был установлен вOn
, ноerror_log
не был установлен. Это заставляло PHP останавливать все. После установкиdisplay_errors
вon
предупреждения теперь отображаются, так что я могу видеть, где что-то ломается на выходе.Этот поток был полезен: http://forums.iis.net/p/1146102/1856222.aspx#1856222
Я не знаю о IIS или FastCGI, но afaik php не имеет такой опции. Однако вы можете установить
error_reporting
(в вашемphp.ini
) вE_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
Чтобы предупреждения исчезли.
Это также очень сильно зависит от вашего кода PHP, если вы делаете что-то сложное в коде и возникает ошибка, веб-серверы иногда выдают 500 ошибок. Я бы предложил вам:
Поместите
@
на линию, чтобы подавить ошибку, т. е.:$x=@my_function($y);
Смотрите журналы вашего веб-сервера для точного сообщения об ошибке, которое вы получаете, а затем разместить его здесь, и, возможно, мы могли бы предложить вам лучшее решение.