第8章 リクエスト情報 / 第2回 模擬試験

PHPのファイルアップロードに関する次の記述のうち、誤っているものはどれか。

アップロードフォームの`<form>`タグには`enctype="multipart/form-data"`を指定する必要がある。
アップロードされたファイルの一時保存先は`$_FILES['file']['tmp_name']`で取得できる。
アップロードサイズの上限は`php.ini`の設定に関係なく無制限である。 正解
`is_uploaded_file()`関数で、指定ファイルがHTTP POST経由でアップロードされたか確認できる。
解説
アップロードできるファイルサイズには上限があり、`php.ini`の`upload_max_filesize`(1ファイルあたりの上限)や`post_max_size`(POSTリクエスト全体の上限)によって制御されます。「無制限である」という記述は誤りです。 他の選択肢が正しい理由は次の通りです。 ・ファイルアップロードを行うフォームの`<form>`タグには、`enctype="multipart/form-data"`の指定が必須です(省略するとファイルの中身が送信されません)。 ・アップロードされたファイルは、一時的にサーバ上の一時ディレクトリに保存され、そのパスは`$_FILES['file']['tmp_name']`で取得できます。 ・`is_uploaded_file()`は、指定したファイルパスが本当にHTTP POSTによるアップロードで作られた一時ファイルかどうかを確認する関数で、不正なパス指定への対策として`move_uploaded_file()`と組み合わせて使われます。 例: ``` // php.iniでの設定例 // upload_max_filesize = 8M // post_max_size = 10M ``` (参照: 独習PHP 第4版 第8章 リクエスト情報 8.8節 アップロード処理 p.396〜403)