Я пытаюсь заставить приложение 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, чтобы он был более мягким, я бы предпочел это, а не перефакторинг всего приложения для проверки массивов на предмет индексовпрежде чем получить к ним доступ.)