У меня есть приложение, работающее в двух местах: сервер разработки MAMP на OS X с PHP 5.3 и Apache и рабочий сервер IIS 6.0 с PHP 5.3.
Проблема в том, что приложение отлично работает на Apache. Никаких ошибок, предупреждений и прочего.
Но когда я вызываю статическую функцию класса Utilities, который у меня есть на сервере 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, я думаю, что это последнее...
Я также хотел бы отметить, что никакие ошибки не отображаются и не регистрируются, несмотря на изменение INI display_errors и использование error_reporting(E_ALL)
. Просто выдается ошибка 500, и скрипт перестает выполняться после этой точки.