人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPを使ったファイルアップロードで php.ini の制限越えた場合にはどのように処理されるのでしょうか? 越えると単に $_POST を array() に設定して、データおくらないで次にすすむだけのように見えます。このときには何らかの環境変数にエラーを埋め込まないのでしょうか?

●質問者: isogaya
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP アップロード エラー データ ファイル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● y-kawaz
●35ポイント

post_max_size の制限に引っかかった場合に何が起こったかを直接示す環境変数が設定されることは無いです。

ただし、$_POST が array() だったり $_SERVER["CONTENT_TYPE"] が multipart/form-data だったり $_SERVER["REQUEST_METHOD"]が POST だったりするので、これらをチェックすればファイルをアップロードしたことは判別出来ると思います。

また、POSTしようとしたデータ長が $_SERVER["CONTENT_LENGTH"] で分かるので、この値が大きすぎるようなら post_max_size の制限に引っかかったことが予想できます。


質問では $_POST が array() になってしまっていると言っていることから post_max_size に引っかかっていることが予想されますが、post_max_size 以外に、アップロード時は upload_max_filesize の制限に引っかかることもあります。

upload_max_filesize に引っかかった場合は、アップロード成功時と同じように $_POST も設定されますが、$_FILE の中で制限に引っかかったファイルに関しては type と tmp_name がnull、errorが1、sizeが0 になります。複数ファイルを同時にアップロードした場合は upload_max_filesize 以下のサイズのファイルは正常にアップロードされるて制限に引っかかったファイルだけがsizeゼロになります。

http://q.hatena.ne.jp/answer


2 ● b-wind
●35ポイント

環境変数ではないですが、スーパーグローバルの $_FILES に情報が書き込まれます。

フォーム名 fileName でアップロードするとエラーが起こった場合

$_FILES['fineName']['error'];

あたりにエラーコードが設定されます。

PHP: ファイルアップロードの処理 - Manual

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ