我正在设置我的cron作业控制器,它只能在CLI中运行,我没有开始构建任何东西,只是在测试阶段使用CI的例子。但是,在运行它时,我没有输出或其他任何东西,只是一个新行,这是我运行的命令:
root@serv$ php /var/www/ci/index.php tools message
root@serv
正如您在第二个行中看到的那样,我没有输出,只是一个新行来运行命令,但我不明白为什么,我无法调试它。代码包含:
<?php
class Tools extends CI_Controller {
public function message($to = 'World')
{
echo "Hello {$to}!".PHP_EOL;
}
}
?>
在我的配置文件中,$config['uri_protocol']
设置为AUTO
,因此这似乎不是问题。
我该如何调试?我可能需要处理哪些选项?
我也display_errors
开启,error_reporting
开到E_ALL
。
答案 0 :(得分:3)
我发现了问题,我在自动加载的库上遇到了redirect('domain.com'); exit;
的问题,因为它与数据库中的域匹配,这样CLI在检测到域时不会为域提供服务,因此我添加了一个redirect('domain.com')
exit
,这就是为什么我没有看到任何输出。
答案 1 :(得分:1)
我在使用w / cli进行codeigniter时遇到了这个问题。我花了一段时间来解决这个问题,发现我忘记了我的登录模型上的控制器,它运行redirect
功能。
答案 2 :(得分:0)
这可能是一个愚蠢的建议,但也可以试一试...... @lolwut,如果不是使用“echo”,或许你必须“返回”输出呢?
答案 3 :(得分:0)
我认为您可以通过使用参数controller和function调用cron.php找到答案http://codeigniter.com/wiki/Cron_job_bootstrapper,然后将CRON_CI_INDEX定义为主index.php的文件路径。 示例php /var/www/ci/cron.php --run = / tools / message
答案 4 :(得分:0)
我有一个遵循本指南的应用程序:http://codeigniter.com/wiki/Category:Advanced::CronScript正在运行(并生成输出)。当我这样做时,CI只有1.7.2,但它可能仍然存在
答案 5 :(得分:0)
(CodeIgniter 2.2.0)
在/application/config/routes.php
中添加路由...为
<?php
class Cron extends CI_Controller
{
public function process_dumps()
{
echo "Processing dumps..." . PHP_EOL;
}
}
?>
...添加
$route['cron/process_dumps'] = 'cron/process_dumps'
没有这一行,CLI上没有输出!