Ошибка IIS PHP 500

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


person Andrew M    schedule 21.06.2012    source источник


Ответы (1)


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

Это. Ненавидеть. ИИС. Я до сих пор не понимаю, почему не регистрируются ошибки и не выдаются исключения или что-либо.

person Andrew M    schedule 22.06.2012