• 締切済み

ファイルアップロードが出来ません。

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> 原因が分かる方、ご意見よろしくお願いいたします。

みんなの回答

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.5

ANo.1です。 意訳すると、「致命的なエラー:C:\Program Files\Apache Group\Apache2\htdocs\view.phpの21行目で未定義の関数 mb_convert_encoding() をコールしています」といった感じです。 あとはご自身で調べられるのがよろしいかと思います。 ファイルアップロードの話からは逸脱しすぎていますので。

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.4

ANo.1です。たびたびすいません。 $file_dir = 'C:\Program File\Apache Group\Apache2\htdocs\image\\'; ではなくて $file_dir = 'C:\Program Files\Apache Group\Apache2\htdocs\image\\'; としてみてください。「s」が抜けてました。 php.iniで値が変更できない件は、まずコメントアウトされていないかチェックして、問題がなければapacheを再起動した後、phpinfo()で値を確認してみてください。

seter777
質問者

お礼

ありがとうございます。 sが抜けていただけでした。無事に動作しました。 アップロード画面の下に次の文が表示されていたのですが、なんでしょうか? Fatal error: Call to undefined function mb_convert_encoding() in C:\Program Files\Apache Group\Apache2\htdocs\view.php on line 21

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.3

ANo.1です。 open_basedirも設定されていないということで、エラーメッセージからしてやはり保存パスがあやしいということになりますね。 提示されたソースを見て気付いたのですが、 $file_dir = 'C:\Program File\Apache Group\Apache2\htdocs\image\\'; この部分は実際に改行しているのでしょうか。 その場合は、 $file_dir = 'C:\Program File\Apache Group\Apache2\htdocs\image\\'; と一行で記述してみてください。

seter777
質問者

補足

$file_dir = 'C:\Program File\Apache Group\Apache2\htdocs\image\\'; と1行で記述してみましたが、変化ありませんでした。 試しにCドライブにtmpフォルダを作って、 php.iniでupload_tmp_dir="C:/tmp/"としてみましたが、 phpinfo()ではno valueと反映されていないのはなぜでしょうか?

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.2

ANo.1です。 すいません、権限関係ならpermission deniedとか出るはずですね。 ということで違う問題のようです。 open_basedirの値は何か設定されていますか?phpinfo()で確認できます。

seter777
質問者

補足

確認したところ、open_basedirはno valueとなっています。

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

エラーメッセージはmove_uploaded_fileが失敗したといっています。 C:\Program File\Apache Group\Apache2\htdocs\imageは正しいパスですか? パスが正しい場合、権限関係はクリアしているでしょうか。

seter777
質問者

補足

パスは正しいと思います。 権限関係はやり方がわからず、変更していません。 どのようにすればよいのですか?

関連するQ&A