質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

解決済

1回答

1794閲覧

cakephp3でs3にファイルアップロードが出来ない

mittchy

総合スコア7

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

0クリップ

投稿2020/06/26 02:17

前提・実現したいこと

cakephp3でawsのs3にファイルをアップロードしたいのですが、アップされません。
log等を確認してもエラーは出ていないので解決策が分かりません。

関数の引数を変えてみたりもしたのですが、上手く動きません。

該当のソースコード

PHP

1   $data = $this->getRequest()->getData(); 2 3 $name = $data['image']['name']; 4 $extension = substr(strrchr($name, '.'), 1); 5 6 $tempFilePath = 'files' . DS . 'test' 7 8 $fileName = date("ymd_") . uniqid("") . "." . $extension; 9 $filePath = $tempFilePath . DS . $fileName; 10 11 $this->Aws->uploadS3($data['image']['tmp_name'], $filePath);

PHP

1 2 function uploadS3($source_path, $upload_path, $bucket_name = AWS_S3_FILE_UPLOAD_BUCKET_NAME) 3 { 4 5 $s3 = new S3Client([ 6 'profile' => 'xxxx-xxx', 7 'version' => 'latest', 8 'region' => 'ap-northeast-1', 9 ]); 10 11 $client = new StsClient([ 12 'profile' => 'xxxx-xxx', 13 'version' => 'latest', 14 'region' => 'ap-northeast-1', 15 ]); 16 17 $result = $client->getCallerIdentity([]); 18 19 try { 20 // Upload data. 21 $result = $s3->putObject([ 22 'Bucket' => $bucket_name, 23 'Key' => $upload_path, 24 'Body' => fopen($source_path, 'rb'), 25 'ACL' => 'bucket-owner-read', 26 'ContentType' => mime_content_type($source_path), 27 ]); 28 29 echo $result['ObjectURL'] . PHP_EOL; 30 } catch (S3Exception $e) { 31 echo $e->getMessage() . PHP_EOL; 32 } 33 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

profileを削除してアクセスキーとシークレットアクセスキーを記述でアップロードすることが出来ました。

PHP

1$s3 = new S3Client([ 2 'credentials' => [ 3 'key' => 'AWS_ACCESS_KEY_ID', 4 'secret' => 'AWS_SECRET_ACCESS_KEY', 5 ], 6 'version' => 'latest', 7 'region' => 'ap-northeast-1', 8 ]); 9 10 $client = new StsClient([ 11 'credentials' => [ 12 'key' => 'AWS_ACCESS_KEY_ID', 13 'secret' => 'AWS_SECRET_ACCESS_KEY', 14 ], 15 'version' => 'latest', 16 'region' => 'ap-northeast-1', 17 ]);

投稿2020/06/26 08:23

mittchy

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問