8

遵循此处找到的用户指南说明: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的灯。Codeigniter 也很标准,我通过命令行运行非 CI 脚本没有问题

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

任何帮助或只是关于如何调试的指示将不胜感激。

提前致谢。

4

5 回答 5

13

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

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

$config['log_threshold'] = 0;

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

如果有人能解释为什么 CI 只在 CLI PHP 上显示此错误 - 可能会帮助遇到此问题并需要通过错误登录来解决此问题的任何其他人。

于 2013-03-28T18:52:03.120 回答
9

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

于 2015-06-25T13:32:13.300 回答
2

致米扬:

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

我通过对 Common.php 文件进行以下更改来解决此问题(黑客,我知道)。

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

然后我的日志完全按照我想要的方式创建。希望这个 hack 有所帮助。

于 2013-10-16T00:10:50.953 回答
0

站点说要从命令行运行 codeigniter,必须设置 $_SERVER['PATH_INFO'] 变量。

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

于 2013-03-04T21:10:45.360 回答
0

这篇 Stack Overflow 帖子中提供的答案对我有用。

在 内system/core/CodeIgniter.php,在第 75 行左右,更改:

set_error_handler('_exception_handler');

到...

set_exception_handler('_exception_handler');

其他用户报告说,这为他们提供了更好的回溯来调试潜在问题,但对我来说,这实际上完全消除了问题。

于 2016-12-12T10:44:41.527 回答