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

LF4*_*LF4 9 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"
Run Code Online (Sandbox Code Playgroud)

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';
Run Code Online (Sandbox Code Playgroud)

控制器/ site.php

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

意见/ test.php的

<html>
<head>
</head>
<body>
<?php echo "PHP is working and the 'test' view was loaded"; ?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

所有日志位置/权限

/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
Run Code Online (Sandbox Code Playgroud)

php.ini文件设置

error_reporting = E_ALL & ~E_DEPRECATED
log_errors = On
error_log = /var/log/apache2/php_errors.log
Run Code Online (Sandbox Code Playgroud)

LF4*_*LF4 10

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

php返回500错误但没有错误日志
CodeIgniter项目加载空白网页

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

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

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

  • 哈哈,哇,幸运的是我终于遇到了这个.新的CentOS 6.4安装,任何apache错误日志中都没有关于我的CI站点的500错误.做一个'yum install php-mysql'修复了一切,blerrrg (3认同)

jah*_*eth 6

发布这个,以防万一它可以帮助某人...

如果你在一个共享的托管平台上,并且无法访问你应该托管文件的目录以外的目录:诀窍是强制php抛出所有错误,即使阿帕奇不能.

打开位于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;
......
Run Code Online (Sandbox Code Playgroud)

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

完成修复后,不要忘记将codeigniter环境设置为"生产".