Какие параметры определяют, будет ли PHP выдавать ошибку при доступе к массиву с использованием несуществующего индекса? - PullRequest
0 голосов
/ 06 сентября 2011

Я пытаюсь заставить приложение PHP 5 работать на IIS7.

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

Учитывая следующий код:

<?PHP
  $testarray = array();
  print $testarray[1];
  print 'hello';
?>

При доступе через Apache (установленный под WampServer), он просто напечатает "Привет "на экране и игнорировать ошибку.

При доступе через IIS 7 , он генерирует следующее исключение:

    PHP Notice:  Undefined offset: 1 in C:\Users\Jonathan\Projects\MyApp\api\inf.php on line 3
    PHP Stack trace:
    PHP   1. {main}() C:\Users\Jonathan\Projects\MyApp\api\inf.php:0

Но если я закомментируюпервый оператор печати, он выполняется правильно и отображает «привет».

И IIS, и Apache указывают на одну и ту же кодовую базу, используя один и тот же экземпляр PHP (версия 5.3.5) и тот же PHPconfig.

Поскольку это языковая проблема, я не понимаю, почему будет иметь значение, какой веб-сервер я использую, но я совершенно не понимаю, почему один экземпляр работает, когда другой выдает ошибку.

Какой параметр может быть причиной этой разницы?

(Если есть способ настроить IIS, чтобы он был более мягким, я бы предпочел это, а не перефакторинг всего приложения для проверки массивов на предмет индексовпрежде чем получить к ним доступ.)

1 Ответ

0 голосов
/ 06 сентября 2011

Вы можете изменить это поведение, изменив настройки отчетов об ошибках в php.ini.

Вы можете установить различные уровни сообщений об ошибках. Например, попытка доступа к неопределенному индексу массива E_NOTICE. Вы можете выбрать, следует ли отображать ошибки этого типа. Чтобы увидеть другие уровни, см. на этой странице.

На любом рабочем веб-сайте не должно отображаться никаких ошибок, в то время как вы, вероятно, должны отображать каждую ошибку в среде разработки.

...