2013-01-05 64 views
5

我目前已將我的Codeigniter根index.phpenvironment變量設置爲development我希望codeigniter迴應php錯誤,而不是500內部錯誤

而且我還沒有啓用小型URL模式。

我不喜歡每天晚上都檢查/var/log/apache2/error.log

希望我的PHP錯誤回到頁面。 500內部錯誤實際上是可用於顯示錯誤的* HARD * est方法。

請注意,我們正在使用默認配置工作在Ubuntu 12.04 LTS服務器上。

+0

也許它不是codeigniter,你有檢查'php.ini'爲'display_errors'嗎? –

回答

13

正如評論中提到的,我懷疑這是CodeIgniter的問題。您更有可能在php.ini中將display_errors設置爲關閉。

如果我沒有記錯,CI的index.php包含調用ini_set('error_reporting', ..);以改變默認行爲,所以你總是可以先看看那裏,看看發生了什麼。

剛剛看了一下,這裏的默認:

/* 
|--------------------------------------------------------------- 
| PHP ERROR REPORTING LEVEL 
|--------------------------------------------------------------- 
| 
| By default CI runs with error reporting set to ALL. For security 
| reasons you are encouraged to change this when your site goes live. 
| For more info visit: http://www.php.net/error_reporting 
| 
*/ 
    error_reporting(E_ALL); 

如果你只是在那裏ini_set('display_errors', 1);添加,就應該開始工作就好了。顯然,最好的辦法是增加一個開關,你的環境來設置這些變量,我不知道爲什麼它不是這樣的了,但這裏有一個例子:

if (defined('ENVIRONMENT')) 
{ 
    switch (ENVIRONMENT) 
    { 
     case 'development': 
      error_reporting(E_ALL); 
      ini_set('display_errors', 1); 
      break; 
     case 'production': 
      error_reporting(0); 
      ini_set('display_errors', 0); 
      break; 
    } 
} 
+0

優秀的答案! – Will

3

只添加索引以下。 PHP,在開發環境的情況下:

case 'development': 
error_reporting(E_ALL); 
ini_set('display_errors', 'On'); 

編輯:作爲魯迪維瑟說,你可以修復它改變你的php.ini。我更喜歡在這裏修復它,所以無論何時我下載項目(我的筆記本電腦,我的辦公室PC或我在緊急情況下借用的計算機,我都不需要更改php.ini配置)。

0

我有相同的問題我從codeigniter得到的唯一內容是隻有500內部錯誤(我的舊項目和乾淨的安裝也一樣) 但有趣的部分是,我的非CI項目仍然工作,主要包含php。

尖端寫出來的錯誤與

ini_set('display_errors', 'On'/,1) 

解決我的問題由於某種原因,我沒有讀笨的核心文件的權利。

將「+ r」添加到解決問題的文件中。

魯迪·維瑟
CarlosIPe
我感謝你們的解決方案。