2012-06-21 2 views
1

У меня есть приложение, работающее в двух местах - сервер 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 просто бросается, и скрипт прекращает выполнение этой точки.

ответ

0

Оказывается, что это была одна из моих функций внутри одного из контекстов, в которых подразумевается, что переменная была классом, но она была нулевой в случаях. Это не произошло в моей машине dev, потому что она использовала другой набор входных данных.

It. Ненавидеть. IIS. Я до сих пор не знаю, почему ошибки не регистрировались, и никаких исключений или ничего не было сделано.

Смежные вопросы