• 締切済み

PHP初心者です。

xamppを使用して勉強してます。 htmlでファイルをアップロードするソースを作り、phpで <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8" /> <?php $file=$_FILES['my_img']; $filePath="./user_img/".$file['name']; move_uploaded_file($file['tmp_name'],$filePath); というコードを書いて実行したところ、 Warning: move_uploaded_file(./user_img/021.jpg): failed to open stream: No such file or directory in  このphpファイルの名前 on line 〇〇行目 Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\php6207.tmp' to './user_img/021.jpg' in このphpファイルの名前 on line 〇〇行目 とエラーになってしまいました。 なぜでしょうか?

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

noname#244856
noname#244856
回答No.1

user_imgディレクトリが存在していない可能性が非常に濃厚です。以下のまとめも参考にしてください。 ファイルアップロードの例外処理はこれぐらいしないと気が済まない http://qiita.com/mpyw/items/939964377766a54d4682 画像アップロード処理サンプル集 http://qiita.com/mpyw/items/73ee77a9535cc65eff1e また、この質問には直接関係ないことですが、PHPを使える場合は <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8" /> よりも <?php header('Content-Type: text/html; charset=utf-8'); ?> を先頭(HTMLを1文字も出力していない状態)に書いた方がベターです。

関連するQ&A

  • どこがおかしいのか不明です…ご教授下さいませ

    とあるサンプルプログラムを実行してましたが、どこが間違っているのか不明です。 どなたか、以下の警告メッセージわかりますでしょうか? http://localhost/test/submit.phpで、“http://localhost/test/img/test.jpg”のファイルをアップロードさせました。 しかし、どこにもtest.jpgはアップされず、以下の警告が画面出力されました。 当方のPHP環境がおかしいのでしょうか? ちなみに“PHP Version 4.3.10”と“PHP Version 5.0.3”で動作させてみました。 -----PHP Version 4.3.10環境で動作させた結果----- Warning: move_uploaded_file(./doc/test.jpg): failed to open stream: No such file or directory in C:\apachefriends\xampp\htdocs\test\upload.php on line 27 Warning: move_uploaded_file(): Unable to move 'C:\DOCUME~1\ohkawa\LOCALS~1\Temp\php121.tmp' to './doc/test.jpg' in C:\apachefriends\xampp\htdocs\test\upload.php on line 27 -----PHP Version 5.0.3環境で動作させた結果----- Warning: move_uploaded_file(./doc/test.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\apachefriends\xampp\htdocs\test\upload.php on line 27 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\DOCUME~1\ohkawa\LOCALS~1\Temp\php124.tmp' to './doc/test.jpg' in C:\apachefriends\xampp\htdocs\test\upload.php on line 27 ※ソースは文字数オーバーで書ききれませんでした。 回答いただけたら、補足でアップさせていただきます。 m(_"_)m

    • ベストアンサー
    • PHP
  • PHP 画像のアップロードについて(move_uploaded_file)

    PHP初心者です。画像のアップロード機能を作成中です。 $path="/home/○○○/public_html/admin/w/p/5.jpg" move_uploaded_file($_FILES[MAINPHOTO]['tmp_name'], $path) で画像をアップしようとしたところ、次のエラーが出ます。 Warning: move_uploaded_file(/home/○○○/public_html/admin/w/p/5.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/○○○/public_html/admin/aaa.php on line 125 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phptC2x2A' to '/home/○○○/public_html/admin/w/p/5.jpg' in /home/○○○/public_html/admin/aaa.php on line 125 ローカルのadmin以下にw/pフォルダはきちんとあります。そこに5.jpgは存在してません。またアップする画像は別名です。 phpは4.2を使用しています。 サーバーはレンタルのkagoya.netを使用しています。 分かりやすい説明よろしくお願いします。

    • ベストアンサー
    • PHP
  • Linuxで画像がアップロードできない

    いつもお世話になっております。 PHP初心者です。 現在、Linuxでサーバー構築をしているのですがWindowsでは問題の無かった画像のアップロードができません。 WindowsではXAMPP1.7.3を使用していました。 LinuxはCentOS5.4でXAMPP for Linux1.7.4を使用しています。 Windowsでは出ない以下のエラーが出ます。 ●Warning: move_uploaded_file(./book_picture/digi.jpg) [function.move-uploaded-file]: failed to open stream: 許可がありません in /opt/lampp/htdocs/sample23.php on line 24 ●Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpGDHAL8' to './book_picture/digi.jpg' in /opt/lampp/htdocs/sample23.php on line 24 php.iniのfile_uploadsはOnになっています。 php.iniのupload_max_filesize とpost_max_sizeは2Mと8Mになっています。 php.iniのupload_tmp_dirは設定されていないのでデフォルトの場所になっていると思います。 apacheを実行しているユーザで書き込みできなくなっているのでしょうか?一般ユーザではなく rootで入っていっるのですが。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • move_uploaded_fileのエラーについ

    画像をアップロードするために move_uploaded_file()の関数を使ったプログラムがうまくいきません。 いろいろ調べたのですが、PHPは初心者なのでアドバイスをお願いします。 --------------------------------------------------------------------------------- Warning: move_uploaded_file(画像アップ先URL) [function.move-uploaded-file]: failed to open stream: HTTP wrapper does not support writeable connections in PHPファイルディレクトリ on line 33 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpxs7jG1' to '画像アップ先URL' in PHPファイルディレクトリ on line 33 --------------------------------------------------------------------------------- 上記のエラーがでます。 調べて試したのですがうまくいきません。 画像格納用ファルダのパーミッションをいろいろ試して最終的777しましたがだめでした。 $file['tmp_name']こちらにうまく入っていないような感じですが?? サーバーはXサーバーを利用しています。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • ファイルアップロードが出来ません。

    phpとApacheを利用して、ファイルのアップロードしたいのですが以下のようなエラーが出て上手くいきません。 エラー文 Warning: move_uploaded_file(C:\Program File\Apache Group\Apache2\htdocs\image\200708090925000.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\view.php on line 12 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\php11.tmp' to 'C:\Program File\Apache Group\Apache2\htdocs\image\200708090925000.jpg' in C:\Program Files\Apache Group\Apache2\htdocs\view.php on line 12 正常にアップロード処理されませんでした。 php.iniの設定はfile_upload=On upload_tmp_dir=NULL upload_max_size=2M です。 phpinfo()で確認したところ、upload_tmp_dirがno valueになっているのですが、設定が反映されていないのでしょうか? 参考までに作成したプログラムを載せておきます。 <HTML> <HEAD> <TITLE>PHPのテキスト</TITLE> </HEAD> <BODY> <?php $file_dir = 'C:\Program File\Apache Group\Apache2\htdocs\image\\'; $file_path = $file_dir.$_FILES["uploadfile"]["name"]; if(move_uploaded_file($_FILES["uploadfile"]["tmp_name"], $file_path)){ $img_dir ="/image/"; $img_path = $img_dir.$_FILES["uploadfile"]["name"]; $size = getimagesize($file_path); ?> ファイルアップロードを完了しました。<BR> <IMG src="<?=$img_path?>"<?=$size[3]?>><BR> <B><?=mb_convert_encoding($_POST["comment"], "EUC-JP","SJIS")?></B><BR> <?php }else{ ?> 正常にアップロード処理されませんでした。<BR> <?php } ?> </BODY> </HTML> 原因が分かる方、ご意見よろしくお願いいたします。

    • 締切済み
    • PHP
  • ファイルアップロードの受信の仕方

    最近、PHPを勉強し始めた初心者です。 よくわかるPHPの教科書(毎日コミュニケーションズ刊)の109ページに載っているファイルアップロードの仕方が上手くいきません。 本書通りプログラムしてJPEG画像をアップしているはずなのですが 「※拡張子が.gif, .jpg, .pngのいずれかのファイルをアップロードしてください」 が表示されてしまいます。 XAMPP 1.7.3を使用しています。特に設定を変更したところはありません。 sample23.phpと同じフォルダ内にuser_imgフォルダも作りました。 何がいけないのでしょうか? ●sample23_input.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio … <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>ファイルアップロードを受信する</title> </head> <body> <form action="sample23.php" method="post" enctype="multipart/ form-data"> <dl> <dt>写真</dt> <dd> <input name="my_img" type="file" id="my_img" size="50" /></dd> </dl> <input type="submit" value="送信する" /> </form> </body> </html> ●sample23.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio … <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>ファイルアップロードを受信する</title> </head> <body> <?php $file = $_FILES['my_img']; print('ファイル名(name): ' . $file['name'] . '<br />'); print('ファイルタイプ(type): ' . $file['type'] . '<br />'); print('アップロードしたファイル(tmp_name): ' . $file['tmp_name'] . '<br />'); print('エラー内容(error): ' . $file['error'] . '<br />'); print('サイズ(size): ' . $file['size'] . '<br />'); // ファイルアップロードの処理をする $ext = substr($file['name'], -3); if ($ext == 'gif' || $ext == 'jpg' || $ext == 'png') { $filePath = './user_img/' . $file['name']; move_uploaded_file($file['tmp_name'], $filePath); print('<img src="' . $filePath . '" />'); } else { print('※拡張子が.gif, .jpg, .pngのいずれかのファイルをアップロードしてください'); } ?> </body> </html> 一時ファイルが保存される場所を検索すると C:\xampp\tmp と表示されます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ファイルのアップロードが、どうしても どうしても 出来ません・・

    ■アップロードフォーム用のHTMLファイルです↓ ファイル名=gazou_upload.html <html> <head> <title>ファイルのアップロード</title> </head> <body> <form method="POST" action="gazou_upload.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000" > <input type="file" name="userfile"><br><br> <input type="submit" value="アップロード"> </body> </html> ■受け取ったファイルをサーバ上のディレクトリに移動するPHPファイルです↓ ファイル名=gazou_upload.php <?php // アップロード先ディレクトリ+ファイル名の指定 $uploaddir = '/image/'; $uploadfile = $uploaddir. $_FILES['userfile']['name']; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { print "ファイルアップロード成功"; print_r($_FILES); } else { print "ファイルアップロード失敗"."<br>"; print_r($_FILES); } ?> ■結果 Warning: move_uploaded_file(/image/P1010851.jpg): failed to open stream: No such file or directory in /home/sites/lolipop.jp/users/**********/web/gazou_upload.php on line 8 Warning: move_uploaded_file(): Unable to move '/tmp/phpuqa8g2' to '/image/P1010851.jpg' in /home/sites/lolipop.jp/users/***********/web/gazou_upload.php on line 8 ファイルアップロード失敗 Array ( [userfile] => Array ( [name] => P1010851.jpg [type] => image/pjpeg [tmp_name] => /tmp/phpuqa8g2 [error] => 0 [size] => 84509 ) ) 簡単なプログラムなのにちゃんと動作してくれません。色々試行錯誤試したりしているのですが・・初心者で本当に困ってます。どなたかアドバイスよろしくお願いします。

    • ベストアンサー
    • PHP
  • 「./」とか「../」が意味するもの

    いつもお世話になっております。 最近、PHPを勉強し始めた初心者です。 よくわかるPHPの教科書(毎日コミュニケーションズ刊)の $filePath = './user_img/' . $file['name']; (110ページのプログラム、13行目)や move_uploaded_file($_FILES['image']['tmp_name'], '../member_picture/' . $image); (239ページのプログラム、16行目)などの 「./」とか「../」は何なのでしょうか? 自分は勝手に「./user_img/」はphpファイルと同じディレクトリのuser_imgフォルダだから「./」だとか 「../member_picture/」はphpファイルより1つ上のディレクトリのmember_pictureフォルダだから「../」なんだと 想像はしてみるのですがイマイチ納得できません。 「./」がどうしてピリオドが1つなのかどうして「../」がピリオド2つなのか教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPで画像をアップロード&保存したいのですが..

    初心者です. ブラウザから画像をアップロードし保存できるようにしたく, サンプルを基に以下のようなソースを書いてみたのですが, 画像の保存ができません. もし直さなければいけないところがわかる人がいらっしゃいましたら ぜひ教えてください. よろしくお願いいたします. <?php $img_name = $_FILES["img_path"]["name"]; $img_size = $_FILES["img_path"]["size"]; $img_type = $_FILES["img_path"]["type"]; $img_tmp = $_FILES["img_path"]["tmp_name"]; if($_REQUEST["up"] != ""){ if($img_tmp != "" and $img_size <= 30000){ $img_message = "名前は: $img_name <br>サイズは: $img_size <br>MIMEタイプは: $img_type <br>一時的に保存されているパスは: $img_tmp <br>"; }else{ $size_error = "サイズが大きすぎます。ファイルサイズは30キロバイト以下です。"; } } $FilePath = "./img/".src.".".GetExt($img_name); move_uploaded_file($img_temp,$FilePath); //GetExt function GetExt($FilePath){ $f = strrev($FilePath); $ext = substr($f, 0, strpos($f,".")); return strrev($ext); } ?>

    • 締切済み
    • PHP
  • Windows2000 サーバー設定できないphp

    Windows2000 サーバーで phpによるファイルのアップロードが出来ません。 (failed to open stream) 自宅でWindows2000サーバーを立てました。 他PCからFTPによるファイルのアップロードは行えるのですが、 他PCからのPHPによる実行が行えません。 現在、ファイルのアップロードを行ってみたところ、 以下のエラーが発生します。 Warning: move_uploaded_file(files/dscn6906.JPG) [function.move-uploaded-file]: failed to open stream: No such file or directory in D:\Program Files\VertrigoServ\www\test\upload.php on line 10 form文、php文は正しいです。 IISマネージャーで既存のFTPサイトによる設定でフォルダ内のファイル名変更・実行等は全てチェックしています。 どうすれば、アップロード可能になるのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP