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

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

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

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

Laravel 5

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

Q&A

解決済

3回答

8148閲覧

Laravel 「Can't write image data to path」

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

Laravel 5

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

0グッド

0クリップ

投稿2018/11/13 08:42

編集2018/11/13 08:52

Laravel使用中です。
自サイトにアップロードしてある画像を取得してサーバーに保存する処理を、練習で作成しておりますが、以下のようなエラーになってしまい画像が保存できておりませんでした。

Can't write image data to path

保存先のフォルダのパーミッションは777、https環境です。
原因がわかる方、アドバイスをお願い致します。

Controller

php

1$imagePath = 'https://example.com/image.jpg'; //保存したい画像のURL 2$file = file_get_contents($imagePath); 3$destPath = sprintf('photos/original/%d', $id); //保存先のディレクトリ 4$destPath = $destPath.'/'.pathinfo($imagePath, PATHINFO_BASENAME); //保存先のディレクトリとファイル名 5 6//保存先フォルダの存在確認 7if (!file_exists(public_path().'/storage/photos/original/'.$id)) { 8 \Log::debug('フォルダは存在しています。'); //ログにはこの文章が残っていた。 9} 10 11$image = Image::make($file); 12$image->save(public_path().'/storage/' . $destPath); //ここでエラー発生

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

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

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

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

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

m.ts10806

2018/11/13 08:45

別サイトの画像を自動で取得するようなプログラムって結構相手方のサーバーの負荷とか加味しなきゃいけないように思いますが、そのあたり問題ないのでしょうか。また、このプログラム自体はどのような環境下で実行されているのでしょうか。httpからのアクセスであればhttpsへのアクセスはセキュリティ的に無理じゃないかなと思いますが。
退会済みユーザー

退会済みユーザー

2018/11/13 08:48

別のサイトといっても、練習用に自分のVPSに対して行っています。両方ともhttps環境です。
m.ts10806

2018/11/13 08:50

了解です。そのあたり何も解説がないとあらぬ誤解を生むので(私のように)、経緯や背景を追記いただけますか?
guest

回答3

0

public_path()ではなくstorage_path()ではないでしょうか

public_pathだとlaravelプロジェクトへの絶対パス/public/になるはず(index.phpおいてるところのパスのはず)

投稿2018/11/13 08:59

rururu3

総合スコア5545

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

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

退会済みユーザー

退会済みユーザー

2018/11/13 09:11

ありがとうございます。 storage_path()にしても、直打ちしていた「/storage/」が不要になるだけで、エラーは解消されませんでした。
rururu3

2018/11/13 09:21 編集

保存したい場所ってlaravel_project/storage/であってますか? &ディレクトリは作成されてますか?
guest

0

ベストアンサー

自己解決しました。
ディレクトリの階層が深くなっていたため、単に指定を失敗してしまったようでした。

投稿2018/11/13 09:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

当該ディレクトリにtouchしてファイルが作れるか確認してください

投稿2018/11/13 09:00

yambejp

総合スコア114759

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

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

退会済みユーザー

退会済みユーザー

2018/11/13 09:06

作成できることを確認しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問