Предупреждения PHP приводят к остановке сценария на IIS, на котором выполняется FastCGI - PullRequest
5 голосов
/ 07 января 2009

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

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

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

Ответы [ 3 ]

10 голосов
/ 07 января 2009

Разобрался с проблемой. log_errors в php.ini было установлено на On, но error_log было не установлено. Это заставляло PHP останавливать все. После установки display_errors в on теперь отображаются предупреждения, чтобы я мог видеть, где что-то ломается в выводе.

Эта тема была полезна: http://forums.iis.net/p/1146102/1856222.aspx#1856222

0 голосов
/ 07 января 2009

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

  1. Поместите @ в строку для подавления ошибки, т.е.:

    $ х = @ my_function ($ у);

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

0 голосов
/ 07 января 2009

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

E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR

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

...