我希望能够从 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";
}
}
这将返回“致命错误:在 /home/app/Console/Command/S3Shell.php 中找不到类 'CakeS3' 的错误。我试图让它工作的主要原因是我可以使用 cron 自动执行一些上传当然,如果有更好的办法,我全都听好了。