ファイルのアップロード中に、PHP が進捗を $_SESSION に書き込む機能。別のリクエストで読めばプログレスバーが作れる。
- multipart(
multipart/form-data): 1 回の POST の本文を区切り文字で分け、テキストとファイルを一緒に送る形式。アップロードのフォームで使う
① ブラウザ: ファイルと一緒に「受付番号 123」を送る(multipart の POST)
② PHP 本体: 受け取りながら、セッションに進捗をメモしていく
「123 番: 100MB 中 40MB 受信済み」
③ ブラウザ: 別のリクエストで「123 番どう?」と聞く → 40% と表示
受付番号は
PHP_SESSION_UPLOAD_PROGRESSという名前の隠しフィールドで送る(ファイルより前に置く)② はアプリのコードが動く前に PHP 本体がやる
デフォルトで有効(
session.upload_progress.enabled=1)。アプリが使っていなくても PHP 本体が勝手に動くphp2shell の 109619 の経路。使わないなら
session.upload_progress.enabled=0
参考: https://www.php.net/manual/en/session.upload-progress.php