LoginSignup
5
9

More than 5 years have passed since last update.

【詰まった】CakePHPにAWS SDK for PHPを導入する方法〜仕事あるある〜

Posted at

'Aws\S3\S3Client' not foundの呪縛から解放するには...

 

ある案件で、すでにCakePHPで作られた管理画面があった。
(※この案件でCakePHPを初めて使うことになる)

そこに画像をアップロードする機能があったんだけど、プロジェクトが大きくなるにつれてAWSに以降することになった。

そのため、画像アップロードの向き先をローカルではなく、S3に以降しようと話がまとまった。

そんなときに起きたあるある話をまとめますた。

環境

 
・ CakePHP v2.5.4
・ AWS SDK for PHP v2.8
・ composer/installers v~1.0

 

途中から知るComposerについて

 
最初にやったことは、AWS SDK for PHP(aws-sdk-php)をAWS公式からダウンロード。
 
CakePHPの場合、GITで管理されているプラグインに関しては、cakephp/app/Plugin直下で管理し、ライブラリ/モジュールなどcakephp/app/Vendorで管理されることが作業中わかったので、ダウンロードしたaws-sdk-phpのzipをVendorの中で解答(zipファイルは消す)。
 
そして参考記事で紹介されている内容をもとにaws-sdk-phpの中に入っているS3Clientを使うと...

2017-04-24 20:12:18 Error: Fatal Error (1): Class 'Aws\S3\S3Client' not found in [/opt/www/cakephp/app/Plugin/AmazonWebServices/Model/Datasource/S3.php, line 24]

 
とエラーが出て、

use Aws\S3\S3Client;

ここの呼び出しがちゃんと処理されていないらしい。

参考記事 

CakePHPのDatasourceを使ってAWS S3にファイルをアップロードする
CakePHP2.3でAWS SDK2 for PHPを使ってS3にファイルをアップロードする方法
 

'Aws\S3\S3Client' not foundの対策

手動でaws-sdk-phpを入れたが、Composerで導入する。

 
AWS SDK for PHPをインストールするならComposerでしょ!の記事の内容を見て、
AWSの公式ドキュメントCakePHPの公式ドキュメントを確認。

Composerについて

 
元々、FuelPHPでComposerを使っていたこととaws-sdk-phpをComposerから導入したので、フレームワークは違うがすでにComposerでaws-sdk-phpを入れていたFuelPHPのプロジェクトを見ながら作業を再開。
 
次に詰まったのは、Composerで入れても'Aws\S3\S3Client' not foundが起きてしまう。
再度、ドキュメントを確認していくとComposerで入れた時に自動的に生成された、autoload.phpを読み込みが必要だが、それまでのCakePHPのプロジェクトでは、そもそもautoload.phpがなかったため、インポート処理もなかった。
 

autoload.phpを読み込み

 
ドキュメントを確認すると

bootstrap.phpに

require APP . 'Vendor/autoload.php';

を追加することがわかった。

Vendorにもcomposerを入れる

また、composer.jsonのrequire内に

"composer/installers": "~1.0"

を追加する。
 
 
これは、autoload.phpが使うようだ。
composer/installersがないと、また違うエラーが出てしまう。

結果

これらの設定で、'Aws\S3\S3Client' not foundの呪縛から解放された。
 
他にこれらが書かれている記事がなかったのと、社内共有のためにまとめました。
 
お役にたたてもらえばと存じまする〜。

 

5
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9