我有兩個places--在OS X開發MAMP服務器上運行的應用程序,使用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;
}
正如我前面提到的,沒有在函數的代碼是不斷調用。如果我在函數定義之後放置了「echo'hello'」,它永遠不會被調用。
是我的代碼,或者這是一個很奇怪的IIS?考慮到這完美的Apache,我認爲這是後者...
我也想指出,沒有錯誤顯示或記錄,儘管更改display_errors INI和使用error_reporting(E_ALL)
。一個500錯誤是簡單的拋出,腳本停止執行過去的那一點。