※ ChatGPTを利用し、要約された質問です(原文:PHPでのファイルアップロードについて)
PHPでのファイルアップロードについて
初めて質問させていただきます。
PHPの勉強をはじめたばかりの初心者です。教本をもとに勉強を進めています。すべて教本どおりに設定し進めてきましたが、ファイルアップロードの箇所でどうしてもうまくいきません。いろいろ、php.iniを修正したり、PHPを修正したりしましたが本どおりの結果になりません。ご指導お願いします。
以下2種類のhtmlファイルとphpファイルを使用
(1)upform.htmlの内容
<HTML><BODY>
<FORM METHOD="POST" ENCTYPE="MULTIPART/FORM-DATA" ACTION="upload.php">
<INPUT TYPE="FILE" NAME="upfile"><br>
<INPUT TYPE="SUBMIT" VALUE="アップロード">
</FORM>
</BODY></HTML>
(2)upload.phpの内容
<html><body>
<?php
if(move_uploaded_file
($_FILES['upfile']['tmp_name'],
"./htdocs/phpbook/"
) == FALSE) {
print "失敗しました。";
}else{
print ($_FILES['upfile']['name']);
print "をアップロードしました。";
}
?>
</BODY></HTML>
上記内容でhtmlファイルを呼び出し、abc.txt(デスクトップに保存している)をアップロードしようとすると、以下のエラーが返されます。
↓↓エラー内容
Warning: move_uploaded_file(./htdocs/phpbook/) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\phpbook\upload.php on line 7
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\phpB.tmp' to './htdocs/phpbook/' in C:\Program Files\Apache Group\Apache2\htdocs\phpbook\upload.php on line 7
失敗しました。
↑↑エラー内容
いろいろ思考錯誤し、upload.phpファイルの6行目"./htdocs/phpbook/"の箇所を、"abc.txt"としてみると、『アップロードしました』とアップロードに成功(?)し、abc.txtはC:\Program Files\Apache Group\Apache2\htdocs\phpbook内にアップロードされました。
教本では、"./htdocs/phpbook/"はファイルの保存先と注記されていますが、エラーになります。"abc.txt"に書き換えることでアップロードに成功しています。また、なぜ、アップロード先がC:\Program Files\Apache Group\Apache2\htdocs\phpbook内になるのかもわかりません。php.iniファイルの設定でしょうか。質問が長くなり、また、内容に足りない面もあるかもしれないですが、どうかよろしくお願いします。
【参考】
php.iniのFile Uploadsを抜きました。
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir =
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
お礼
ご回答ありがとうございます。 そういうことだったのですね。 上記設定では、upload.phpが存在する場所からみた相対パスにアップロードされるということですね。 ちょっと進めそうです。ありがとうござました。