9

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

我认为它必须与codeigniter有关,因为我在apaches根目录(/var/www)有一个index.php和index.html,在站点根目录(/var/www/vhosts/srp-local)也有一个index2.php /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['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
4

8 回答 8

10

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

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

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

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

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

于 2013-03-24T16:51:08.347 回答
10

发布此内容,以防万一它对某人有所帮助...

如果您在共享托管平台上并且无权访问您应该托管文件的目录以外的目录:诀窍是强制 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;
......

进行上述更改后立即开始显示代码有什么问题,我能够修复它并启动并运行它。

完成修复后,不要忘记将您的 codeigniter 环境设置为“生产”。

于 2015-03-07T22:44:01.030 回答
4

这是错误可能不可见的另一个原因:

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

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

于 2013-12-19T07:27:31.993 回答
0

就我而言(购物车类),这是一个 URL 问题,请查看

/var/log/apache2/error.log

如果你有类似的东西

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

然后你必须像这样在你的类名前加上'/index.php/'

http://localhost/codeigniter/index.php/cart
于 2014-03-21T13:44:59.227 回答
0

我也在为这个问题而苦苦挣扎。

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

yum install php-mbstring进而service httpd restart

于 2016-03-20T04:17:51.567 回答
0

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

于 2016-08-12T10:18:14.183 回答
0

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

于 2020-07-23T04:51:47.320 回答
-1

我检查了 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
于 2018-01-19T11:51:49.037 回答