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

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

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

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

Q&A

解決済

1回答

1089閲覧

move_uploded_fileがfalseになる。

redux

総合スコア19

PHP

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

0グッド

0クリップ

投稿2020/08/23 06:06

実現したいこと。

画像の投稿機能を実装したい。
画像をドロップして送信ボタンをクリックすると「'ファイルがアップロードされました。'」と表示され、/asset/imgのパスにtest.jpgとして保存される。

現状

送信ボタンをクリックすると「$_FILES['file']['tmp_name']」は送信されるものの、
「move_uploaded_file($_FILES['file']['tmp_name'], '/asset/img/test.jpg')」がfalseとなり、画面上に何も表示されず、画像も保存されない。

試したこと

該当ディレクトリのプロパティから権限をフルコントロールに変えたが、だめだった。
(権限の問題だとすると、今後ロリポップのサーバーにもアップする予定なので上手くいくか不安になってきた)

php

1 <script src="https://code.jquery.com/jquery-3.3.1.js"></script> 2 <link rel="stylesheet" type="text/css" href="/asset/dropify/css/dropify.css"> 3 <script style="width: 100%;" src="/asset/dropify/js/dropify.js"></script> 4 <script> 5 $(document).ready(function(){ 6 $('.dropify').dropify(); 7 }); 8 </script> 9 10 <?php if(empty($_FILES['file']['tmp_name'])) {?> 11 <form method="post" enctype="multipart/form-data"> 12 <input type="file" class="dropify" name="file" accept=".png, .jpeg, .jpg" required> 13 <input type="submit"> 14 </form> 15 <?php 16 } 17 if(!empty($_FILES['file']['tmp_name'])){ 18 if(move_uploaded_file($_FILES['file']['tmp_name'], '/asset/img/test.jpg')){ 19 echo 'ファイルがアップロードされました。'; 20 } 21 } 22 ?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

diff

1 if(!empty($_FILES['file']['tmp_name'])){ 2- if(move_uploaded_file($_FILES['file']['tmp_name'], '/asset/img/test.jpg')){ 3+ if(move_uploaded_file($_FILES['file']['tmp_name'], __DIR__ . '/asset/img/test.jpg')){ 4 echo 'ファイルがアップロードされました。'; 5 } 6 }

投稿2020/08/23 06:09

編集2020/08/23 06:10
phper.k

総合スコア3923

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

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

redux

2020/08/23 06:14

回答ありがとうございます。 試してみたのですが上手くいかなかったです。。。 画面上部でdropifyのscriptやcssを呼んでいるのでパスは間違ってなさそうです。
phper.k

2020/08/23 06:19

> 画面上部でdropifyのscriptやcssを呼んでいるのでパスは間違ってなさそうです これがなんでこの問題と関係していると思っているのですか?
phper.k

2020/08/23 06:19

> 試してみたのですが上手くいかなかったです。。。 試し方が間違っている可能性は?
redux

2020/08/23 06:24

>>これがなんでこの問題と関係していると思っているのですか? パスの違いでアクセスできていないならば、scriptも読み込めないからです。 >>試し方が間違っている可能性は? 該当箇所にコピペしたので間違っていないと思います。
phper.k

2020/08/23 06:26

move_uploaded_file の第二引数は、サーバー上の絶対パスです。 css やスクリプトのパスは、url上のパスで、別のものです。 > 該当箇所にコピペしたので間違っていないと思います。 コピペしてソースコードを修正した上で、画像を上げ直さない限り、画像は表示されるはずがありません。
redux

2020/08/23 06:38

>>move_uploaded_file の第二引数は、サーバー上の絶対パスです。 css やスクリプトのパスは、url上のパスで、別のものです。 知識不足でした。 >>コピペしてソースコードを修正した上で、画像を上げ直さない限り、画像は表示されるはずがありません。 ソース修正 → 保存 → 更新 → 再アップ  上記を試しましたが、反映されませんでした。
phper.k

2020/08/23 06:47

画像は正しく保存されているかを確認してください。
phper.k

2020/08/23 06:48

質問の情報が少ない場合、可能性の一つを回答し、問題の切り分けを行う必要があります。 回答をもらったからと言って、一発で解決できるとは思わないで欲しいです。
redux

2020/08/23 06:51

'ファイルがアップロードされました。' の文言が表示されないので、保存処理を通っていません。 画像も保存していません。
phper.k

2020/08/23 07:04

var_dump($_FILES['file']['tmp_name']) などで、しっかりデバッグし、ちゃんと値が入ってきているのか? var_dump(__DIR__ . '/asset/img/test.jpg') で意図したパスになっているのか? こういうことを一つ一つ確認しましょう。
退会済みユーザー

退会済みユーザー

2020/08/23 07:09

それと、アクセス権があるのかどうか、assetやasset/imgが存在するのか、など。
redux

2020/08/23 07:28

>>var_dump(__DIR__ . '/asset/img/test.jpg') で意図したパスになっているのか? 問題はここでした。 __DIR__ からの相対パスが適切でなかった事が原因でした。 この部分を修正後に保存できる事が確認できました。ありがとうございます。
phper.k

2020/08/23 07:43

解決したのでしたら、質問を閉じてください、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問