...pudding - diary


2016-10-16

_ [Software] PHP に POST するときの処理の仕組み

HTTP の世界では、GET だろうが POST だろうが、サーバはリクエストを受けてからそのリクエストに従って処理をするわけです。当然だよね。

たとえば POST リクエストの multipart のなかにファイルを詰め込んでいると、サーバはとりあえずいったん受け取ってしまうわけだ。受け取ってから処理を決めるわけだ。

受け取る→処理をする→結果を返す。この流れだ。

PHP では、POST でファイルを受け取ったらいったんそれを php.ini で指定される upload_tmp_dir に一時保存する。

そして呼び出した php スクリプトを実行する。ユーザに処理結果(ページ)を返したら php スクリプトの実行は終了する。php スクリプトの実行が終了した時点で一時保存されたファイルは削除される。

添付ファイルとか全く関係ない php スクリプトにでも ファイル付きの POST を投げれば WEB サーバはいったん作業ディレクトリにファイルを置く動作をする。

たとえば以下内容だけが書かれた phpinfo.php ファイルをサーバに用意して。

<? phpinfo(); ?>

次の内容を実行すれば。

$ dd if=/dev/zero of=./datfile1 bs=1M count=10
$ curl -X POST -F file=@datfile1 http://www.example.com/phpinfo.php

10MB の POST を送れるわけだ。送っただけで、それは何もせずに消えるだけなのだけど。

送ってこられたファイルを php スクリプトの中で処理するかしないかには関係なく、POST されればとりあえずいったん一時保存する動作をすると。

そういう動きをします。


2016年
10月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Twitter : @moriya_jp