0

Cake Shell から CakeS3 プラグインを呼び出せるようにしたいと考えています。ただし、私が理解しているように、シェルからコンポーネントをロードすることはできません。それを克服するための戦略を概説しているこの投稿を読みました: Cakephp 2+ Shell でコンポーネントを使用する- しかし、私は成功していません。ここでの CakeS3 コードは、私のアプリの残りの部分で完全に機能する Cake S3 コードに似ています。

<?php
App::uses('Folder','Utility');
App::uses('File','Utility');
App::uses('CakeS3.CakeS3','Controller/Component'); 
class S3Shell extends AppShell {
public $uses = array('Upload', 'User', 'Comment');


public function main() {

    $this->CakeS3 = new CakeS3.CakeS3(
     array(
        's3Key' =>  'key',        
        's3Secret' => 'key',      
        'bucket' => 'bucket')

    ); 
    $this->out('Hello world.');
    $this->CakeS3->permission('private');
    $response = $this->CakeS3->putObject(WWW_ROOT . '/file.type' , 'file.type', $this->CakeS3->permission('private'));
                    if ($response ==  false){
                    echo "it failed";
                    } else {
                    echo "it worked"; 
                    }
}

これにより、「致命的なエラー: クラス 'CakeS3' が /home/app/Console/Command/S3Shell.php に見つかりません」というエラーが返されます。これを機能させようとしている主な理由は、cron を使用していくつかのアップロードを自動化できるようにするためです。もちろん、もっと良い方法があれば、私はすべての耳です。

4

3 に答える 3

0

私は CakeS3 の作成者です。残念ながら、このプラグインを作成したとき、シェルからアップロードを実行する必要はなく、S3 への単純なインターフェイスが必要だっただけなので、これを行うための「サポートされている」方法はありません。私たちのコントローラー。次に、プラグインを単純な S3 コネクタとしてオープン ソース化しました。

シェル アクセスをサポートするように変更してみたい場合は、PR を歓迎します。

私はプラグインの特定のロードマップを持っていないので、あなたの問題を拡張として github にタグ付けし、将来の開発で確実に検討しますが、それがあなたの時間要件に適合することを保証することはできません。私はあなたがPRをしていると言います。

于 2013-07-13T07:09:10.170 に答える
0

私は次のApp:usesように見えるべきだと思います:

App::uses('CakeS3', 'CakeS3.Controller/Component');
于 2013-07-11T22:20:03.150 に答える