Предупреждения 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

Это очень сильно зависит от вашего PHP-кода: если вы делаете что-то сложное в коде и возникает ошибка, веб-серверы иногда выдают 500 ошибок. Я бы предложил вам:

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

    $ Х =@my_function($ у);

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

Я не знаю про IIS или FastCGI, но у afaik php такой опции нет. Однако вы можете установить error_reporting (в вашем php.ini) чтобы

E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR

чтобы предупреждения ушли.

Другие вопросы по тегам