laravelで動画投稿アプリを作成しています。
ローカルでは動画の投稿、再生ができていたのですが、xserverにアップロードしたアプリでは動画再生ができず、苦戦しています。
・やったこと
0. シンボリックリンクを作成して,「ドメイン名/public_html/publicと、laravelアプリのpublicディレクトリ直下と繋いだ。
これによりviewの表示、DB情報のCRUDはできています。
- アプリ内のstorageシンボリック作成。
「php artisan storage:link」を打って、laravelアプリのpublicディレクトリ配下にstorageというシンボリックリンクを作成してある。
- 「storeAs()」でstorage/app/publcディレクトリに動画ファイルを保存。
ローカル環境中では「/storage/videos/ファイル名」を参照することで動画が再生できていた。
- Xserverではファイルのmime設定があるので、動画(video/mp4,mp4v,3gp)のmime設定を追加した。
以上により、
・「ドメイン名」にアクセスすれば、public_htmlのpublicシンボリックリンク(1で作成)によりlaravelアプリのpublicディレクトリが参照される。
・「ドメイン名/storage/videos/ファイル名」にアクセスすればlaravelアプリのpublicに貼られたstorageシンボリックリンク(2で作成)を参照し、「storage/app/public/videos/ファイル名」の動画ファイルを参照できる。
よう設定できていると考えているのですが、実際は再生ができていません。
これまでにも「xserverに上げた環境で画像表示できない」といった質問があり、
「public_html内にアプリのstorage/app/publicを参照するstorageというシンボリックリンクを作成する」こともやってみました。
が、それでも動画データの参照はできず。
追記:
エラーの詳細
・statusは404
・URLは「ドメイン名/storage/videos/ファイル名」を参照している
いただいたアドバイスを元にXアクセラレーターをOFFにしてみましたが、変化はありませんでした。
また、controller内でStorageファサードを使ってみたところ、ファイルのmimeタイプはチェックできました。
// showアクション内で実行 dd(Storage::mimeType($video_storage_path)); // video/mp4と出力される
以上、お手数ですが、アドバイスよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー