アプリ用の S3 プラグインを作成しています。app/Plugin/S3/Controller/Component/S3Component.php
私はこれらを持っています:
<?php
App::import('Vendor', 'aws/aws-autoloader');
use Aws\S3\S3Client;
class S3Component extends Component {
public function loadS3 () {
$s3 = S3Client::factory(array(
'key' => '',
'secret' => ''
));
return $s3;
}
}
私のアプリのコントローラーでは、次を使用して呼び出します$s3 = $this->S3->loadS3();
エラーがスローされますError: Class 'Aws\S3\S3Client' not found
App::uses('Vendor', 'aws/Aws/S3/S3Client');
コンポーネントクラスに次の行を追加してみました:を削除しましuse Aws\S3\S3Client;
た。それが示しているError: Class 'S3Client' not found
フォルダ内の AWS SDKapp/Plugin/S3/Vendor/aws
http://docs.aws.amazon.com/aws-sdk-php/guide/latest/quick-start.html#factory-methodを参照して S3 オブジェクトをロードしています。
解決:
これは、@akirk の助けを借りて、私のコンポーネントがどのように見えるかです。
<?php
ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'). PATH_SEPARATOR . ROOT .DS . 'app/Plugin/S3/Vendor/aws');
require ROOT . DS . 'app/Plugin/S3/Vendor/aws/aws-autoloader.php';
use Aws\S3\S3Client;
class S3Component extends Component {
public function loadS3 () {
$s3 = S3Client::factory(array(
'key' => '',
'secret' => ''
));
return $s3;
}
}