2012-06-21 130 views
1

我有兩個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_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錯誤是簡單的拋出,腳本停止執行過去的那一點。

回答

0

事實證明,這是我裏面的contextifyToUser的一個功能之一是假設一個變量是一個類,但它的情況下空。這在我的開發機器中沒有發生,因爲它使用了一組不同的輸入數據。

它。討厭。 IIS。我仍然不確定爲什麼沒有記錄錯誤,也沒有任何例外或被拋出。