У меня есть приложение, работающее в двух местах - сервер MAMP разработки на OS X, с PHP 5.3 и Apache, а также сервер производства IIS 6.0 с PHP 5.3.Ошибка IIS PHP 500
Проблема в том, что приложение отлично работает на Apache. Нет ошибок, предупреждений или чего-либо еще.
Но когда я вызываю статическую функцию класса Утилиты, который у меня есть на сервере IIS, я получаю ошибку 500. Проблема в том, что функция никогда не вызывается - размещение «эха» в начале функции ничего не делает, что говорит мне, что это не код внутри функции, которая является проблемой ... Другие статические функции класс отлично работает.
Проверка журнала (C:\Windows\temp\php-errors.log
) не показывает ничего, связанного с этой проблемой, но правильно регистрирует другие ошибки (неожиданные символы и все остальное).
Это функция, которая вызывается, и место, где скрипт прекращает выполнение:
json_encode(Utilities::ContextifyToUser(Article::getArticlesInCollectionOfUser($user), $user);
Разделяя json_encode
и getArticlesInCollection
показывают, что они оба работают и возвращаются правильные значения. Это функция «Contextify», которая убивает ее.
Это contextify функция, как это определено в классе под названием Utilities
:
public static function ContextifyToUser($obj = array(), $user = null){
if(is_null($user) || !is_array($obj)){
return null;
}
foreach($obj as $key => $value){
$obj[$key] = $value->contextifyToUser($user);
}
return $obj;
}
Как я уже говорил ранее, ни один из кода в функции не всегда называется. Если после определения функции я поставлю «эхо» привет, это никогда не вызывается.
Это мой код, или это что-то странное с IIS? Учитывая, что это отлично работает в Apache, я думаю, что это последнее ...
Я также хотел бы указать, что ошибки не отображаются или не регистрируются, несмотря на изменение display_errors INI и использование error_reporting(E_ALL)
. Ошибка 500 просто бросается, и скрипт прекращает выполнение этой точки.