Codeigniter命令行错误 - PHP致命错误:找不到类“CI_Controller”

时间:2013-03-04 18:00:29

标签: php codeigniter command-line

按照此处的用户指南说明操作后:http://ellislab.com/codeigniter/user-guide/general/cli.html我无法通过命令行运行测试脚本。

我的控制器位于/ var / www / mysite / application / controllers /

    class Tools extends CI_Controller {

    public function message($to = 'World')
    {
        echo "Hello {$to}!".PHP_EOL;
    }
}

在我的浏览器中,我可以访问

http://mysite/tools/message/ben

功能正确输出“Hello ben”

从终端我应该可以运行:

  

$ php index.php工具消息“Ben”

我的终端应该打印:“Hello Ben”

但是我收到以下错误:

  

PHP致命错误:第233行的/var/www/mysite/system/core/CodeIgniter.php中找不到“CI_Controller”类

我的服务器很标准; ubuntu LAMP。 Codeigniter也非常标准,我通过命令行运行非CI脚本没有问题

我的PHP二进制文件只位于/ usr / bin / php< - This post表示直接从usr / bin / php运行CI的问题,但是我没有运行共享的PHP服务,我不明白为什么这会对PHP执行CI脚本的方式产生影响。

非常感谢任何帮助或只是指示如何调试它。

提前致谢。

5 个答案:

答案 0 :(得分:12)

解决! (部分)问题是CodeIgniters错误记录。

在application / config / config.php中,我修改了以下配置属性:

$config['log_threshold'] = 0;

这会禁用日志记录,并允许$ php index.php执行。

如果有人能够解释为什么CI仅在CLI上显示此错误 - 可能会帮助其他任何有此问题且需要解决错误登录的人。

答案 1 :(得分:6)

要解决错误“未找到类'CI_Controller'”尝试转到Application -> Config -> database.php然后检查数据库详细信息,例如主机名用户名密码数据库

答案 2 :(得分:2)

致Mijahn:

我遇到了同样的问题,经过大约两个小时的代码跟踪来找出问题之后,在使用本机PHP load_class函数时加载CI_Controller似乎存在某种冲突。

我通过对Common.php文件进行以下更改(hack,我知道)解决了这个问题。

//$_log =& load_class('Log');
require_once('system/libraries/Log.php');
$_log = new CI_Log();

然后我的日志就像我想要的那样创建。希望这个黑客有所帮助。

答案 3 :(得分:0)

这个site表示要从命令行运行codeigniter,必须设置$ _SERVER ['PATH_INFO']变量。

  

$ _ SERVER ['PATH_INFO']通常在发出Web请求时由php提供。但是,由于我们从命令行调用此脚本,因此我们需要将此环境的这一小部分模拟为Web请求。

答案 4 :(得分:0)

this Stack Overflow post中提供的答案对我有用。

system/core/CodeIgniter.php内,在第75行附近,更改:

set_error_handler('_exception_handler');

为...

set_exception_handler('_exception_handler');

其他用户报告说这给了他们一个更好的回溯来调试底层问题,但对我来说,这实际上完全消除了这个问题。