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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/10/26 20:02:06
  • 終了:2007/11/02 20:05:04

回答(2件)

id:y-kawaz No.1

y-kawaz回答回数1420ベストアンサー獲得回数2252007/10/26 22:32:57

ポイント35pt

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

id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/10/27 17:50:12

ポイント35pt

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

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

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

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

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません