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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

PHP

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

Amazon S3

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

2491閲覧

LaravelでS3に画像をアップロードしたい

kei_0715

総合スコア10

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

PHP

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

Amazon S3

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/11/18 07:15

前提・実現したいこと

Cloud9上のLaravelでAWSのS3に画像ファイルをアップロードしたいです。

発生している問題・エラーメッセージ

ファイルをアップロードしようとするとエラーが表示されます。

Aws\S3\Exception\S3Exception Error executing "PutObject" on "https://gm3g80w2e6hyuyxrl6vy7ikaxdz1bijkrgmw9xkb.jpeg"; AWS HTTP error: cURL error 6: (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

該当のソースコード

Controllerの処理

use Storage; --略 public function create(Request $request) { $this->validate($request, News::$rules); $news = new News; $form = $request->all(); if (isset($form['image'])) { $path = Storage::disk('s3')->putFile('/',$form['image'],'public'); $news->image_path = Storage::disk('s3')->url($path); } else { $news->image_path = null; } unset($form['_token']); unset($form['image']); $news->fill($form); $news->save(); return redirect('news/create');

試したこと

・IAMユーザーの再設定。
・環境変数の見直し(リージョンもS3と一致)
・php artisan cache:clearの実行
アクセスキーとシークレットアクセスキーに関しても何度も見直しましたが、記述ミスはありませんでした。

どなたか、すみませんがアドバイス頂けると助かります。

補足情報(FW/ツールのバージョンなど)

Laravel 6.2.0
PHP 7.2.19
cloud 9

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

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

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

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

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

guest

回答2

0

ベストアンサー

Error executing "PutObject" on "https://gm3g80w2e6hyuyxrl6vy7ikaxdz1bijkrgmw9xkb.jpeg"; AWS HTTP error: cURL error 6: (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

とりあえず、http://curl.haxx.se/libcurl/c/libcurl-errors.html ここ見ろって言われてるし、error 6 と書かれているので調べる。

http://curl.haxx.se/libcurl/c/libcurl-errors.html

イメージ説明

「Hostの名前解決ができない」と教えてくれてる。

https://gm3g80w2e6hyuyxrl6vy7ikaxdz1bijkrgmw9xkb.jpeg まあ、確かにこんなホスト名おかしいですね。

hostの設定に何か間違いがあるのでしょうと推測できる。

AWSの設定は、envにありそう。

AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= AWS_DEFAULT_REGION=us-east-1 AWS_BUCKET=

おっと、HOSTの設定らしいものはなさそうだ。

リファレンス(日本語訳)読む。

イメージ説明

「config/filesystems.php」をみる

's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), ],

'url' => env('AWS_URL'), ここが関係してそうだ。

.envAWS_URL を追加して値を設定してみる。

投稿2019/11/18 07:35

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kei_0715

2019/11/18 12:18 編集

早速のご回答ありがとうございます! .envにAWS_URLを追加してみました。 ``` AWS_ACCESS_KEY_ID=【アクセスキー】  AWS_SECRET_ACCESS_KEY=【シークレットアクセスキー】 AWS_DEFAULT_REGION=ap-northeast-1 AWS_BUCKET=【バケット名】 AWS_URL=s3-ap-northeast-1.amazonaws.com/【バケット名】/ ``` 以上を記述後に、php artisan cache:clearを実行して再度送信してみました。 そうしたら次のエラー文が発生しました。 ``` Aws\S3\Exception\S3Exception Error executing "PutObject" on "https://portfolio-salon.s3.ap-northeast-1.amazonaws.com/HjonhIeprnw0blogiJzC5FOqKdI9fIdfKJJh58wa.jpeg"; AWS HTTP error: Client error: `PUT https://portfolio-salon.s3.ap-northeast-1.amazonaws.com/HjonhIeprnw0blogiJzC5FOqKdI9fIdfKJJh58wa.jpeg` resulted in a `403 Forbidden` response: <?xml version="1.0" encoding="UTF-8"?> <Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided (truncated...) InvalidAccessKeyId (client): The AWS Access Key Id you provided does not exist in our records. - <?xml version="1.0" encoding="UTF-8"?> <Error><Code>InvalidAccessKeyId</Code><Message>The AWS Access Key Id you provided does not exist in our records.</Message><AWSAccessKeyId>************* </AWSAccessKeyId><RequestId>127C63683F0B3B57</RequestId><HostId>h18bfLa/auIN7+P5YKPTCrJM/u+xY0PwsyBCsBVsZ48AzU6topcp3h7YlnikQ3tn5fFViUuzjds=</HostId></Error> ``` アクセスキーも再確認したのですが合ってました。 やはりAWS側の設定でしょうか? ルートユーザーからIAMとS3の設定を行いました。 →ユーザーの追加をしてAmazonS3FullAccessにチェックを入れてグループを作成 →アクセスキーとシークレットアクセスキーを入手 →S3バケットを作成 アクセス許可の設定(下記二つがオン。全てオフにしてもダメでした) ・新しいパブリックバケットポリシーを介して許可されたバケットとオブジェクトへのパブリックアクセスをブロックする ・任意のパブリックバケットポリシーを介して、バケットとオブジェクトへのパブリックアクセスとクロスアカウントアクセスをブロックする 設定した内容は以上になります。 マークダウンは回答には反映されないのですね、長々とすみません。
退会済みユーザー

退会済みユーザー

2019/11/18 08:44 編集

env をいじったら php artisan cache:clear を行うというのは、お忘れではありませんかね?
退会済みユーザー

退会済みユーザー

2019/11/18 11:39 編集

エラーをよくご覧になって欲しい。 <AWSAccessKeyId>****************************</AWSAccessKeyId> 余計な文字が見える
kei_0715

2019/11/18 12:18 編集

解決しました! <AWSAccessKeyId>************** </AWSAccessKeyId> アクセスキーの末端に見知らぬ記述があるので違和感があったのですが、 キーをコピペでやっていた時にスペースが紛れ込んでいました・・・。 本当に助かりました、ありがとうございます!
退会済みユーザー

退会済みユーザー

2019/11/18 11:39

とりあえず、アクセスキーが露出しているのはまずいので、その部分だけは編集しておきましょう。
kei_0715

2019/11/18 12:19

ご指摘ありがとうございます!
guest

0

キャッシュのせいでenvの値がちゃんと読めてないのかもしれないです。
以下コマンドでキャッシュクリアを試してみてください。

php artisan cache:clear

投稿2019/11/18 08:39

KonPota

総合スコア121

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

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

kei_0715

2019/11/18 08:45

.envファイルの記述変更後にphp artisan cache:clearは実行しているのですが、 やはりエラーが発生してしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問