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的自动加载中启用数据库库后,一切正常.我没有收到任何错误的事实真的让我考虑改变框架.
发布这个,以防万一它可以帮助某人...
如果你在一个共享的托管平台上,并且无法访问你应该托管文件的目录以外的目录:诀窍是强制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环境设置为"生产".