1

私は2つの場所でアプリケーションを実行しています。1つはOSX上の開発用MAMPサーバーで、PHP5.3とApacheを使用しています。もう1つは本番用IIS6.0サーバーでPHP5.3を使用しています。

問題は、アプリケーションがApacheで正常に動作することです。エラーや警告などはありません。

しかし、IISサーバー上にあるUtilitiesクラスの静的関数を呼び出すと、500エラーが発生します。問題は、関数が呼び出されないことです。関数の先頭に「エコー」を配置しても何も起こりません。これは、問題となっているのは関数内のコードではないことを示しています...その他の静的関数クラスはうまくいきます。

ログ(C:\Windows\temp\php-errors.log)を確認すると、この問題に関連するものは何も表示されませんが、他のエラー(予期しない文字など)が正しくログに記録されます。

これは呼び出されている関数であり、スクリプトが実行を停止する場所です。

json_encode(Utilities::ContextifyToUser(Article::getArticlesInCollectionOfUser($user), $user);

とを分離して、両方が機能し、正しい値を返していることを示しますjson_encodegetArticlesInCollectionそれを殺すのは「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;
    }

前に述べたように、関数内のどのコードも呼び出されません。関数定義の後に「echo'hello'」を付けると、呼び出されません。

それは私のコードですか、それともIISで何か奇妙なことですか?これがApacheで完全に機能することを考えると、後者だと思います...

また、display_errors INIを変更し、を使用しているにもかかわらず、エラーが表示またはログに記録されないことも指摘しておきますerror_reporting(E_ALL)。500エラーがスローされるだけで、スクリプトはそのポイントを超えて実行を停止します。

4

1 に答える 1

0

これは、contextifyToUser内の関数の1つであり、変数がクラスであると想定していたことがわかりましたが、場合によってはnullでした。別の入力データのセットを使用していたため、これは私の開発マシンでは発生しませんでした。

それ。嫌い。IIS。エラーがログに記録されておらず、例外や何かがスローされていない理由はまだわかりません。

于 2012-06-22T18:42:04.530 に答える