Codeigniter空白页和apache日志中的错误500?

时间:2013-03-23 15:55:57

标签: php apache codeigniter-2

我昨天花了5个多小时试图弄清楚我的设置有什么问题。在ci213 / application / controllers和views目录中,我有一个简单的site.php控制器和test.php视图。我不知道为什么这个网站不会加载。有人建议我接下来要找什么?也许记录它正常工作?如果我能得到更好的日志错误,我可以有更多的工作。

我认为它必须与codeigniter有关,因为我在apaches root(/ var / www)有一个index.php和index.html,在根目录有一个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>

Apache Root

/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

8 个答案:

答案 0 :(得分:10)

我终于找到了一些指向正确方向的东西。这两篇文章提到CI如何在数据库模块中使用@可能会导致该问题。

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

我禁用了自动加载数据库模块并且网站正常工作。现在我只需弄清楚我得到的数据库错误可能导致CI失败。一旦弄明白,我就会更新这个答案。

更新:我检查了帐户/密码并访问了数据库,一切正常。问题是没有安装php mysql驱动程序。这是我第一次真正使用Ubuntu系统而且我认为mysql驱动程序将使用默认的php包安装,我不正确。

安装php5-mysqlnd并在CI的自动加载中启用数据库库后,一切正常。我没有收到任何错误的事实真的让我考虑改变框架。

答案 1 :(得分:6)

发布此信息,万一它可以帮助某人......

如果您在共享托管平台上并且无法访问除了您应该托管文件之外的目录:诀窍是强制php抛出所有错误,即使apache不能。

打开&#34; index.php&#34;位于codeigniter安装的根文件夹中;

define('ENVIRONMENT', 'development');

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

立即开始进行上述更改,显示代码的错误,我能够修复并启动并运行。

不要忘记将您的codeigniter环境设置为&#34; production&#34;一旦你做了 修好它。

答案 2 :(得分:3)

以下是可能无法看到错误的另一个原因:

我有同样的问题。就我而言,我从生产环境中复制了源代码。因此,ENVIRONMENT中定义的index.php变量设置为'production'。这导致error_reporting设置为0(无日志记录)。只需将其设置为'development',您就应该开始在apache日志中看到错误消息。

原来500是由于数据库配置中缺少半冒号: - )

答案 3 :(得分:0)

在我的情况下(购物车类)这是一个URL问题,请看

/var/log/apache2/error.log

如果您有类似

的内容
[client 127.0.0.1] File does not exist: ...

然后你必须用'/index.php/'为你的班级名称加上前缀

http://localhost/codeigniter/index.php/cart

答案 4 :(得分:0)

我也在努力解决这个问题。

在我的新服务器上,我没有安装php mb_string模块。

yum install php-mbstring然后service httpd restart

答案 5 :(得分:0)

在我的情况下,错误没有显示,因为php设置中的显示错误未设置为活动状态。将其设置为活动后,将显示错误,并显示导致500错误的问题 Display Error

答案 6 :(得分:0)

我检查了7.0.xx的php版本,所以我降级到了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

答案 7 :(得分:0)

就我而言,我检查了位于CI项目的文件夹 logs/ 中的错误日志。
碰巧是与数据库相关的错误。