🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

2回答

957閲覧

laravelアプリをさくらサーバーにデプロイすると画像が保存できずエラー表示される

kentooooo

総合スコア18

さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2019/12/05 05:33

色々勉強中の初心者です。
よろしくお願いします

前提・実現したいこと

以前、laravelで画像アップができずエラー表示されるでお世話になりました。
アドバイス通りに作成し、ローカル環境では画像保存、bladeにて表示できるようになりました。
これを本番環境にデプロイしたところエラーが出て困っています

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

タイトルの通り、本番環境としてさくらサーバーにデプロイしたのですが、画像を保存しようとした際

Can't write image data to path (/home/〇〇/www/laravel/laravel-app/storage/app/public/images/uiydm.png)

とエラーが出ます
〇〇はアカウント名なので伏せています。つくったlaravelプロジェクト名はlaravel-appです

試したこと

上記パスの通りなのですが、wwwの下にlaravelフォルダを作り、その中にプロジェクトフォルダを配置しています。
画像以外のデータ(ユーザー情報やパスワードなど)はDBに保存できています。

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

laravel5.6使用。リソースコントローラー使って構築しました。

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

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

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

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

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

rururu3

2019/12/05 06:03

/home/〇〇/www/laravel/laravel-app/storage/app/public/images/ っていうフォルダは存在してますか?&書き込み権限はありますか?
kentooooo

2019/12/05 06:11

フォルダがありませんでした。 ローカル環境ではpublic/imagesフォルダをつくって、そこに保存させていたのですが… デプロイするとフォルダがなくなることがあるのでしょうか?
rururu3

2019/12/05 06:16 編集

デプロイ作業によるのですが、基本的にはlaravelで用意されているデフォルトフォルダ以外(自身で後で作成したフォルダ)は本番環境でも作る必要があります
kentooooo

2019/12/05 10:43

コンソールにてpublic内にimagesフォルダ作成しました。 が、やはり同様のエラーがありまして。 他にはどのような理由が考えられますでしょうか?
kentooooo

2019/12/05 10:45

ls -lにて drwxr-xr-xですのでimagesフォルダに書き込み権限があると思うのですが…
kentooooo

2019/12/05 10:57

すいません、勘違いでした。 imagesフォルダ作成し、無事登録できました。 が、今度はbladeに画像が表示されず…。 なにか考えられる理由がありましたら教えてくださいませ。 本番環境での画像のパスは <img src="http://〇〇.sakura.ne.jp/laravel/laravel-app/public/storage/images/xoLXwgJyrhkj.png" alt="image" class=""> で、ローカル環境では <img src="http://homestead.test/storage/images/bBdFGHFIoW4Ee49fWOHhL5cJ2711JuWOUHYkH87Z.png" alt="image" class=""> です。
rururu3

2019/12/05 15:24

質問のつもりがどうも回答に書いたほうが良さそうなので回答として記載します
guest

回答2

0

投稿2019/12/05 05:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

質問のところである程度の回答をしたので&回答に書いたほうが良さそうなので回答します


/home/〇〇/www/laravel/laravel-app/storage/app/public/images/
っていうフォルダは存在してますか?&書き込み権限はありますか?


本番環境での画像のパスは

<img src="http://〇〇.sakura.ne.jp/laravel/laravel-app/public/storage/images/xoLXwgJyrhkj.png" alt="image" class=""> で、ローカル環境では <img src="http://homestead.test/storage/images/bBdFGHFIoW4Ee49fWOHhL5cJ2711JuWOUHYkH87Z.png" alt="image" class="">

に関しては
publicフォルダ以下にstrage/imageフォルダが有るのを前提として
本番環境でのURLにlaravel/laravel-app/publicがあるのがまずいですね。
本番環境のHTTPサーバーがApacheならルートディレクトリをlaravel/laravel-app/publicにしないと本番環境とローカル環境でパスが合わないのでそうなります。

Apacheなら
Apache LaravelでHelloWorldを出そうと思ったらつまづいた

Nginxなら
nginxでlaravelを動かす際にいろいろ詰んだ話

のようにしてpublicフォルダをルートディレクトリにすればOKかと思います

※〇〇.sakura.ne.jpでは今回作成してるlaravelプロジェクトのみを動かす想定として書いております

投稿2019/12/05 15:43

rururu3

総合スコア5545

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

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

kentooooo

2019/12/06 04:19

色々試しまして、無事実装完了しました! 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問