按照此处的用户指南说明进行操作后: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”
我的终端应该打印:“你好本”
但我得到以下错误:
PHP致命错误:/var/www/mysite/system/core/CodeIgniter.php LINE:233未找到Class 'Functions'
我的服务器相当标准; ubuntu LAMP。Codeigniter也是相当标准的,我通过命令行运行非CI脚本没有问题
My PHP binary is only located in /usr/bin/php <-- This post suggests an issue running CI directly from usr/bin/php,however I'm not operating a shared PHP service,and I don't see why this would make a difference to how PHP execute a CI script.
任何帮助或只是一个关于如何调试这个指示将不胜感激。
先谢了。
5条答案
按热度按时间anauzrmj1#
解决了!(部分)问题是CodeIgniters错误日志记录。
在application/config/config.php中,我修改了以下配置属性:
这将禁用日志记录,并允许执行
$ php index.php
。如果有人能解释为什么CI只在CLI PHP上显示此错误-可能会帮助任何有此问题并需要通过错误登录解决的人。
ocebsuys2#
此错误通常是由于无法连接到数据库。其实,从错误信息来看,他们之间没有任何关系。然而,这似乎是第一个出现的可见错误,当框架无法连接到数据库时。
因此,要解决错误“Class 'CI_Controller' not found”,首先检查您的数据库设置(Application -> Config -> database.php),例如
*hostname*, *username*, *password* and *database*
,并查看它们是否正确以及您是否可以手动连接。ar7v8xwq3#
致米扬:
我也遇到了同样的问题,经过大约两个小时的代码跟踪来找出问题,似乎在使用原生PHP load_class函数时加载CI_Controller存在某种冲突。
我通过对Common.php文件进行以下更改来解决这个问题(我知道是黑客)。
我的日志然后在那里创建完全像我想要的。希望这个hack有帮助。
o3imoua44#
这个site说要从命令行运行codeigniter,必须设置$_SERVER [PATH_INFO ']变量。
$_SERVER ['PATH_INFO']通常由php在发出Web请求时提供。但是,由于我们是从命令行调用此脚本,因此需要将环境的这一小部分模拟为Web请求。
b4wnujal5#
this Stack Overflow post中提供的答案对我很有效。
在
system/core/CodeIgniter.php
中,在第75行附近,更改:set_error_handler('_exception_handler');
去...
set_exception_handler('_exception_handler');
其他用户报告说,这给了他们一个更好的回溯来调试底层问题,但对我来说,这实际上完全消除了问题。