来自CLI的Codeigniter HMVC:不进入控制器

lui*_*yen 6 php codeigniter codeigniter-3 codeigniter-hmvc

我正在尝试从CLI运行代码,正如CI文档中所述,但由于某些原因,可能因为使用HMVC扩展,它不会进入指定的控制器.

我没有在HMVC扩展站点中找到关于CLI执行的其他文档.

有谁知道如何处理这个?

这里的代码:

/**
 * application/controllers/Cron.php
 * This is just a wrapper controller to use an HMVC module using the basic CLI syntax for CI
 *
 */
class Cron extends MX_Controller
{

    public function generatepdfs($start_date = null, $end_date = null)
    {       
            echo 'Not reached'; exit;

            $this->load->module('facturation/documentscontroller');

            $this->documentoscontroller->generatepdfs($start_date, $end_date);
    }
}
Run Code Online (Sandbox Code Playgroud)

无论我是从文档根运行它:

php index.php cron generatepdfs
Run Code Online (Sandbox Code Playgroud)

或这个:

/usr/bin/php -f /home/user/public_html/index.php cron generatepdfs
Run Code Online (Sandbox Code Playgroud)

它不会显示"未到达".

如果我从浏览器运行它,它会这样做.

这些是输出到控制台的一些错误:

无法找到指定的类:Session.php

我在application/libraries/session/MY_Session.php中有一个覆盖的Session库MY_Session,它在浏览器中完美运行.如果我将此文件向上移动一个目录,则此错误将不会再次显示在控制台中,但它在浏览器中不起作用.它是自动加载的方式.

我根本不喜欢的解决方法:在两个位置复制相同的文件.

下一个错误:

PHP致命错误:第196行/home/mysite/public_html/system/core/Common.php中找不到类"CI_Preferencias"

我有一个名为Preferencias的自定义库,它也是自动加载的,在application/libraries/Preferencias.php中

同样,这在浏览器中完美运行.但是,从CLI开始,它似乎搜索不存在的CI_Preferencias库.如果我将其重命名为CI_Preferencias,并自动加载"CI_Preferencias",CI将从CLI搜索名为CI_CI_Preferencias的类.

我不确定我是否遗漏了某些内容,或者CI中存在实际错误,或者HMVC模块正在弄乱它.

谁能帮助我?这让我抓狂,因为我必须使用从cronjobs安排的CLI操作,我觉得完全迷失了.

Sat*_*tya 2

如果您在配置文件中添加了 subclass_prefix 作为“ $config['subclass_prefix'] = 'MY_';”。尝试使用 MY_Preferencias.php 而不是 Preferencias.php

如果你没有使用 $config['subclass_prefix'] = 'MY_'; 并将会话库调用为 $this->load->library('session'); 它采用 CI 的本机会话库而不是您的自定义 MY_Session.php

链接在这里