Codeigniter应用程序在CLI中返回空白输出

时间:2012-02-22 03:32:49

标签: php codeigniter command-line-interface

我正在设置我的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

6 个答案:

答案 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上没有输出!