2016-04-01 17 views
5

私はCLIのコードをCIのドキュメントのように実行しようとしていますが、何らかの理由で、HMVC拡張を使用しているために、 。CLIからのCodeigniter 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); 
    } 
} 

どんなに私はドキュメントルートからこれを実行する場合:

php index.php cron generatepdfs 

またはこの:

/usr/bin/php -f /home/user/public_html/index.php cron generatepdfs 

それは達していない「と表示されません'

ブラウザから実行するとします。私は、アプリケーション/ライブラリ/セッション/ MY_SessionでオーバーライドセッションライブラリMY_Sessionを持ってSession.php

指定されたクラスを見つけることができません:

これらは、コンソールにエラー出力の一部ですブラウザで完璧に動作する.phpこのファイルを1つ上のディレクトリに移動すると、このエラーはコンソールに再び表示されませんが、ブラウザでは機能しません。途中でオートロードされます。

この問題を回避するには、私はまったく気に入らない:両方の場所で同じファイルをコピーする。

次のエラー:

PHPの致命的なエラー:クラスのCI_Preferenciasは '行196

に/home/mysite/public_html/system/core/Common.phpでは見られない、私はカスタムライブラリを持っていますアプリケーション/ライブラリ/ Preferencias.phpでオートロードされているPreferenciasと呼ばれます。

これも、ブラウザでは完全に動作します。しかし、CLIでは、存在しないCI_Preferenciasライブラリを検索しているようです。名前をCI_Preferenciasに変更し、自動ロード "CI_Preferencias"を使用すると、CIはCLIからCI_CI_Preferenciasというクラスを検索します。

私は何かが不足しているか、CIに実際のバグがあるのか​​、それともHMVCモジュールがそれを乱しているのか分かりません。

誰でも私を助けることができますか?私はcronjobsからスケジュールされたCLIアクションを使用しなければならないので、これは私を夢中にしています。

+0

アプリケーションコントローラではなく、モジュールにHMVCを持っているので、私は思うだろう 'アプリケーション/モジュール/ your_module_name /コントローラ/ Cron.php' – user4419336

+0

wolfgang1983 @:私が持っていた場合はCodeIgniterのためのCLI構文は何コントローラはモジュールに配置されていますか?私は成功せずに試しました。とにかく、元の位置にあるモジュール外のコントローラーは、Webサーバーを介して実行されるときに起こるように、HMVC拡張を使用しても動作するはずです。 –

+0

私の個人的なアカウントで(私が仕事場で使っているものではない) – user3514092

答えて

0

設定ファイルにsubclass_prefixを追加した場合は、 "$config['subclass_prefix'] = 'MY_';"となります。 Preferencias.phpの代わりにMY_Preferencias.phpを試してください

$ config ['subclass_prefix'] = 'MY_';セッションライブラリを$ this-> load-> library( 'session')として呼び出します。カスタムMY_Sessionの代わりにCIのネイティブセッションライブラリを使用しています。PHP

Here is the link

関連する問題