質問: $msg[$_FILES['upfile']」このような記述が可能な理由が分かりません。 どなたかご助言いただければ幸いです。よろしくお願いします
回答: ネットで検索して、コードをコピペして使うのも学習段階では構わないと思いますが、あなたはそのコードをちゃんと検証していないですよね? ``` $err_msg = $msg[$_FILES['upfile']['error']]; ``` を通は、`if ($_FILES['upfile']['error'] !== UPLOAD_ERR_OK)` の条件を満たすとき。 エラーになる具体的な事象は `UPLOAD_ERR_FORM_SIZE => 'HTMLのMAX_FILE_SIZE 制限を越えています。',` と書かれているわけですから、 `MAX_FILE_SIZE` で制限されている値以上の大きなファイルをアップロードしてみれば、その条件を通るわけです。(←コードが正しければ) ``` if ($_FILES['upfile']['error'] !== UPLOAD_ERR_OK) { $msg = [ UPLOAD_ERR_INI_SIZE => 'php.iniのupload_max_filesize制限を越えています。', UPLOAD_ERR_FORM_SIZE => 'HTMLのMAX_FILE_SIZE 制限を越えています。', UPLOAD_ERR_PARTIAL => 'ファイルが一部しかアップロードされていません。', UPLOAD_ERR_NO_FILE => 'ファイルはアップロードされませんでした。', UPLOAD_ERR_NO_TMP_DIR => '一時保存フォルダが存在しません。', UPLOAD_ERR_CANT_WRITE => 'ディスクへの書き込みに失敗しました。', UPLOAD_ERR_EXTENSION => '拡張モジュールによってアップロードが中断されました。' ]; $err_msg = $msg[$_FILES['upfile']['error']]; var_dump($err_msg); exit; } ``` こんな風にして実際に動かしてみれば、分かるはず。 どんなプログラマも当たり前にやっていることなので、「デバッグ」の技術は何よりも大切。