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

PHPのファイルアップロードのエラー処理に関する次の記述のうち、正しいものはどれか。

`$_FILES['file']['error']`が`0`(`UPLOAD_ERR_OK`)の場合、正常にアップロードが完了したことを示す。 正解
アップロードエラーの詳細は、PHPでは一切取得できない。
アップロードが失敗しても、`$_FILES`配列にはエラー情報が含まれない。
アップロードサイズの上限を超えると、PHPは無限にファイルを受け付ける。
解説
`$_FILES['file']['error']`には、アップロード処理の結果を表す定数値が格納されます。値が`0`(定数`UPLOAD_ERR_OK`)であれば、エラーなく正常にアップロードが完了したことを意味します。 他の選択肢が誤りである理由は次の通りです。 ・アップロードエラーの種類は`$_FILES['file']['error']`の値(`UPLOAD_ERR_INI_SIZE`, `UPLOAD_ERR_PARTIAL`, `UPLOAD_ERR_NO_FILE`など)として取得でき、「一切取得できない」は誤りです。 ・アップロードが失敗した場合でも、`$_FILES['file']['error']`には失敗理由を示す値が格納されます。「エラー情報が含まれない」は誤りです。 ・`upload_max_filesize`などの上限を超えたアップロードは拒否され、`$_FILES['file']['error']`にエラー値が入ります。「無限に受け付ける」は誤りです。 例: ``` if ($_FILES['file']['error'] === UPLOAD_ERR_OK) { move_uploaded_file($_FILES['file']['tmp_name'], '/uploads/' . uniqid()); } else { // エラー処理 } ``` (参照: 独習PHP 第4版 第8章 リクエスト情報 8.8.4節 アップロードのエラー処理 p.401〜403)