Предупреждения PHP вызывают остановку скрипта на IIS под управлением FastCGI


Мы переходим на новый сервер под управлением Windows 2003 и IIS 6. Когда мой PHP-код запускается, он имеет предупреждение на определенной строке (которое я ожидаю в данный момент, но скоро исправлю). Однако, когда он попадает в предупреждение, он немедленно останавливает обработку и возвращает ошибку 500 в заголовке HTTP. Обычно я ожидаю, что PHP выведет предупреждение, но продолжаю обрабатывать скрипт.

Есть ли что-то в конфигурации для IIS, FastCGI или PHP, что возвращало бы 500 ошибки, когда PHP выдает предупреждение?

Поясню: я не хочу подавлять предупреждения; я хочу, чтобы они отображались. Я не хочу, чтобы скрипт останавливал обработку предупреждений.

3 5

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 ошибок. Я бы предложил вам:

  1. Поместите @ на линию, чтобы подавить ошибку, т. е.:

    $x=@my_function($y);

  2. Смотрите журналы вашего веб-сервера для точного сообщения об ошибке, которое вы получаете, а затем разместить его здесь, и, возможно, мы могли бы предложить вам лучшее решение.