私は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_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;
}
前に述べたように、関数内のどのコードも呼び出されません。関数定義の後に「echo'hello'」を付けると、呼び出されません。
それは私のコードですか、それともIISで何か奇妙なことですか?これがApacheで完全に機能することを考えると、後者だと思います...
また、display_errors INIを変更し、を使用しているにもかかわらず、エラーが表示またはログに記録されないことも指摘しておきますerror_reporting(E_ALL)
。500エラーがスローされるだけで、スクリプトはそのポイントを超えて実行を停止します。