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 を使用していくつかのアップロードを自動化できるようにするためです。もちろん、もっと良い方法があれば、私はすべての耳です。