2013-03-23 183 views
6

我昨天花了5個多小時試圖弄清楚我的設置有什麼問題。在ci213/application/controllers和views目錄中我有一個簡單的site.php控制器和test.php視圖。我不知道爲什麼這個網站不會加載。任何人都有關於我可以尋找什麼的建議?也許記錄它正常工作?如果我能得到更好的日誌錯誤,我可以有更多的工作。Codeigniter空白頁面和apache日誌中的錯誤500?

我覺得它必須是codeigniter的東西,因爲我在apaches根目錄下有一個index.php和index.html(/ var/www),還有一個在網站根目錄下的index2.php(/ var/www/vhosts/srp-local/htdocs),當我到localhost/index。(php | html)或者srp-local/index2.php頁面加載並正確顯示時,php和apache正在工作。

試圖加載網站我得到一個空白頁,所以我覺得它必須是CI的東西。我拖尾了所有的日誌文件,唯一得到更新的是網站access.log,並顯示以下錯誤。

127.0.0.1 - - [23/Mar/2013:09:00:28 -0600] "GET/HTTP/1.1" 500 381 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0" 

的config.php

$config['base_url'] = 'http://srp-local/'; # My hosts file is configured for this. 
$config['log_threshold'] = 4; 
$config['log_path'] = '/var/www/vhosts/srp-local/logs/ci_error.log'; 

控制器/ site.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class Site extends CI_Controller 
{ 
    public function index() 
    { 
     $this->load->view('test'); 
    } 
} 

視圖/ test.php的

<html> 
<head> 
</head> 
<body> 
<?php echo "PHP is working and the 'test' view was loaded"; ?> 
</body> 
</html> 

阿帕奇根

/var/www/vhosts 
$ ll 
drwxrwsr-x 6 krizzo www-data 4096 Mar 22 10:45 it355 
drwxrwsr-x 6 krizzo www-data 4096 Mar 22 17:45 srp-local 

htdocs是srp-local的webroot,它的index.php被稱爲ci213文件夾。

/var/www/vhosts 
$ ll srp-local/ 
drwxrwsr-x 2 krizzo www-data 4096 Mar 22 17:06 cgi-bin 
drwxrwsr-x 4 krizzo www-data 4096 Mar 22 17:14 ci213 
drwxrwsr-x 2 krizzo www-data 4096 Mar 22 17:19 logs 
drwxrwsr-x 5 krizzo www-data 4096 Mar 22 17:26 htdocs 

所有日誌位置/權限

/var/log/apache2/ 
    -rw-rw-rw- 1 www-data adm  0 Mar 23 08:52 php_errors.log 
    -rw-r----- 1 root  adm 12191 Mar 23 09:32 access.log 
    -rw-r----- 1 root  adm 4858 Mar 23 09:32 error.log 

/var/www/vhosts/srp-local/logs/ 
    -rw-r--r-- 1 root www-data 3227 Mar 22 19:42 error.log 
    -rw-rw-r-- 1 krizzo www-data  0 Mar 23 09:37 ci_error.log 
    -rw-r--r-- 1 root www-data 12983 Mar 23 09:38 access.log 

php.ini文件中設置

error_reporting = E_ALL & ~E_DEPRECATED 
log_errors = On 
error_log = /var/log/apache2/php_errors.log 
+0

啓用錯誤報告中'php.ini'(或通過htaccess的或腳本),將其設置爲'E_ALL',然後檢查PHP錯誤日誌 – 2013-03-23 16:04:30

+0

我沒有在我的php.ini文件已經啓用了錯誤日誌記錄。從phpinfo()我看到「error_log:/var/log/apache2/php_errors.log」和「log_error:On」。 – LF4 2013-03-23 22:26:08

回答

9

我終於找到的東西,我指出了正確的方向。這兩篇文章提到CI如何在數據庫模塊中使用@可能會導致該問題。

php return 500 error but no error log
CodeIgniter project loads blank webpage

我禁用自動裝載數據庫模塊和現場工作。現在我只需要弄清楚我收到的數據庫錯誤可能會導致CI失敗。一旦我找出答案,我會更新這個答案。

更新:我檢查了賬戶/密碼和訪問數據庫的一切工作。問題是沒有安裝php mysql驅動程序。這是我第一次真正使用Ubuntu系統,我認爲mysql驅動程序將安裝默認的php軟件包,這是我不正確的。

安裝php5-mysqlnd並啓用CI自動加載中的數據庫庫後,現在一切正常。我沒有得到任何錯誤的事實真的讓我考慮改變框架。

+3

哈哈,哇,幸運的我終於碰到了這個。新鮮的CentOS 6.4安裝,並且沒有任何關於我的CI站點500錯誤的任何apache錯誤日誌。做'yum安裝php-mysql'修復了這一切,blerrrg – xref 2013-06-01 03:04:38

+0

@xref你是我的生命保護者! – Cong 2014-10-01 17:26:32

+0

如果mysql驅動程序也安裝了,並且出現錯誤,請檢查mysql驅動程序。對我來說,它的msqli,而不是mysql。 – 2017-09-07 09:37:44

2

這是錯誤可能不可見的另一個原因:

我有同樣的問題。就我而言,我從生產環境中複製了源代碼。因此index.php中定義的變量ENVIRONMENT被設置爲'production'。這導致error_reporting被設置爲0(無記錄)。只需將其設置爲'development',並且您應該開始在apache日誌中看到錯誤消息。

原來的500是由於分號數據庫配置缺少:-)

0

在我的情況(一類車),它是URL的事,看

/var/log/apache2/error.log 

如果你有什麼樣

[client 127.0.0.1] File does not exist: ... 

然後,你必須通過「/index.php/」這樣

012前綴的類名
3

張貼這一點,以防萬一它可以幫助別人...

如果你是一個共享的主機平臺上,並沒有獲得比你應該在哪裏託管文件的其他目錄:招纔給力PHP拋出所有錯誤,即使Apache不能。

打開駐留在codeigniter安裝根文件夾中的「index.php」;

define('ENVIRONMENT', 'development'); 

if (defined('ENVIRONMENT')) 
{ 
    switch (ENVIRONMENT) 
     { 
      case 'development': 
      error_reporting(E_ALL); 
      /*added line below*/ 
      ini_set('display_errors', '1'); 
      break; 
...... 

做出上述更改立即開始顯示代碼出了什麼問題,我可以修復它並啓動並運行。

一旦您修復了 ,請不要忘記將您的codeigniter環境設置爲「生產」。

+1

你救了我的命! – 2017-08-12 19:27:40

+0

同樣。關於如何返回更有用的錯誤消息的建議應該是第一條建議。 – ianp 2018-03-01 10:44:49

0

我也在努力解決這個問題。

在我的新服務器上,我沒有安裝php mb_string模塊。在我的情況

yum install php-mbstring然後service httpd restart

0

,並沒有顯示錯誤,因爲在PHP中設置顯示的錯誤沒有設置爲主動。將其設置爲活動的php錯誤後,顯示了導致500錯誤的問題。
Display Error

0

我查了一下PHP版本這是7.0.xx所以我降級到PHP 5.6.xx 和使用下列步驟來得到它爲我工作。

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart 
sudo add-apt-repository ppa:ondrej/php 
sudo apt-get update 
sudo apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-mbstring php7.0-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0