phpで作成されているWebアプリケーションのファイルアップロードができなくなってしまいました
原因がわからないので基本に戻ってテストプログラムを作成してエラーコードを調べることにしました
参考にしたサイトは下記です(といっても殆ど丸写しですが^^;)
w3schools.com
http://www.w3schools.com/
PHP File Upload
http://www.w3schools.com/php/php_file_upload.asp
フォーム(test.html)
1 2 3 4 5 6 7 8 9 10 11 12 |
; html-script: false ]<html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file"><br> <input type="submit" name="submit" value="Submit"> </form> </body> </html> |
テストプログラム(upload_file.php)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
; html-script: false ]<?php if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] . "<br>"; echo "Name: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . $_FILES["file"]["size"] . "<br>"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Stored in: " . $_FILES["file"]["tmp_name"]; } ?> |
正常な場合
1 2 3 4 5 |
; html-script: false ] Upload: test.jpg Type: image/pjpeg Size: 4.9755859375 kB Stored in: /tmp/phpvPwI7U |
エラーの場合
1 2 3 4 5 |
; html-script: false ]Error: 4 Name: Type: Size: 0 Stored in: |
エラーの場合はエラーコードが表示されます。エラーコードを調べれば原因がわかると思います
POST メソッドによるアップロード – エラーメッセージの説明
http://php.net/manual/ja/features.file-upload.errors.php
UPLOAD_ERR_OK
値: 0; エラーはなく、ファイルアップロードは成功しています。
UPLOAD_ERR_INI_SIZE
値: 1; アップロードされたファイルは、php.ini の upload_max_filesize ディレクティブの値を超えています。
UPLOAD_ERR_FORM_SIZE
値: 2; アップロードされたファイルは、HTML フォームで指定された MAX_FILE_SIZE を超えています。
UPLOAD_ERR_PARTIAL
値: 3; アップロードされたファイルは一部のみしかアップロードされていません。
UPLOAD_ERR_NO_FILE
値: 4; ファイルはアップロードされませんでした。
UPLOAD_ERR_NO_TMP_DIR
値: 6; テンポラリフォルダがありません。PHP 4.3.10 と PHP 5.0.3 で導入されました。
UPLOAD_ERR_CANT_WRITE
値: 7; ディスクへの書き込みに失敗しました。PHP 5.1.0 で導入されました。
UPLOAD_ERR_EXTENSION
値: 8; PHP の拡張モジュールがファイルのアップロードを中止しました。 どの拡張モジュールがファイルアップロードを中止させたのかを突き止めることはできません。 読み込まれている拡張モジュールの一覧を phpinfo() で取得すれば参考になるでしょう。 PHP 5.2.0 で導入されました。
エラーコード:5は無いのか