笨命令行错误 - PHP致命错误:类“是CI_Controller”未找到(Codeigniter

2019-07-20 23:37发布

下面这里找到用户指南的指示后: http://ellislab.com/codeigniter/user-guide/general/cli.html我无法运行通过命令行测试脚本。

我控制器位于位于/ var / WWW / mysite的/应用/控制器/

    class Tools extends CI_Controller {

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

在我的浏览器我可以访问

http://mysite/tools/message/ben

和函数正确输出“你好奔”

从终端我应该能够运行:

说明:$ php的index.php工具消息“奔”

我的终端应打印:“你好奔”

不过,我得到以下错误:

PHP致命错误:类“是CI_Controller”在/var/www/mysite/system/core/CodeIgniter.php未发现行233

我的服务器是非常标准的; Ubuntu的LAMP。 笨是非常标准也和我有运行通过命令行的非CI脚本没问题

我的PHP程序仅位于/ usr / bin中/ PHP < - 本帖表明直接从USR /斌/ PHP运行CI的问题,但是我没有操作共享PHP服务,我不明白为什么这个将会对PHP如何执行一个脚本CI的差异。

如何调试这任何帮助或指示,将不胜感激。

提前致谢。

Answer 1:

解决了! (部分)的问题是CodeIgniters错误日志。

在应用程序/配置/ config.php文件,我修改了以下配置属性:

$config['log_threshold'] = 0;

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

如果任何人都可以解释为什么CI只显示在CLI PHP这个错误 - 可能帮助其他人谁拥有这个问题,需要将其与错误登录解决。



Answer 2:

为了解决错误“类‘是CI_Controller’找不到”尝试去Application -> Config -> database.php ,然后检查数据库的细节,如主机名用户名密码数据库



Answer 3:

要Mijahn:

我有这个同样的问题,约两个小时通过代码跟踪来找出问题后,似乎有某种与利用原生PHP load_class功能时加载是CI_Controller冲突。

我工作围绕这一问题通过向的common.php文件进行以下更改(黑客,我知道)。

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

我的日志然后在那里创建了完全一样我想要的。 希望这有助于破解。



Answer 4:

该网站说,在命令行运行笨,必须设置$ _ SERVER [“PATH_INFO”]变量。

$ _SERVER [“PATH_INFO”]通常是由PHP提供当Web请求。 然而,由于我们在命令行中调用这个脚本,我们需要模拟环境作为Web请求的这一小部分。



Answer 5:

在所提供的答案这个堆栈溢出后为我工作。

system/core/CodeIgniter.php ,围绕线75,更改:

set_error_handler('_exception_handler');

至...

set_exception_handler('_exception_handler');

其他一些用户报告,这给了他们一个更好的回溯与调试潜在的问题,但对我来说,这其实完全删除的问题。



文章来源: Codeigniter Command line error - PHP Fatal error: Class 'CI_Controller' not found