アップロードファイルに関するphp.iniの設定をまとめます。
環境
- PHP 7.3.8
- php.x86_64 7.3.8-1.el7.remi @remi-php73
- CentOS 7.6
- Apache/2.4.6
設定ファイルはデフォルトで/etc/php.ini
にあります。
アップロードファイルに関する設定
基本的には3つの設定を確認しておくと良いです。
variable | default※ | description |
---|---|---|
memory_limit | 128MB | メモリ使用量の上限 |
post_max_size | 8MB | POSTデータの最大サイズ ※1回のアップロードファイルすべての合計サイズ |
upload_max_filesize | 2MB | 1ファイルあたりの最大アップロードサイズ |
※環境で紹介したPHPのバージョンでデフォルトになっていた値です。
最近のスマホのカメラだと画像が3MB超えるサイズにもなるためupload_max_filesize
はもう少し大きくても良いですね。
大きなサイズを配信したくない場合は、PHPでもリサイズできます。
PHPで画像のリサイズ&圧縮する方法を比較する - Qiita
以下はphp.iniで書かれていた場所と説明を示します。 コメントはphp.netから抜粋しています。
memory_limit
スクリプトが確保できる最大メモリをバイト数で指定します。
404行目辺り
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M
もし、使用可能メモリに制限を設けたくない場合は、 ここに-1
を指定してください。
post_max_size
POSTデータに許可される最大サイズを設定します。
660行目辺り
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 8M
一般的にmemory_limit
は、post_max_size
よりも大きくする必要があります。
POSTデータの大きさが、post_max_size
より大きい場合、_FILES superglobals`は空になります。
upload_max_filesize
アップロードされるファイルの最大サイズ。
842行目辺り
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M
整数の場合の単位はバイト。
この近辺に要件によっては気にする必要がある設定があるので紹介します。
828行目辺りから
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On
HTTPファイルアップロードを有効とするかどうか。
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
;upload_tmp_dir =
ファイルアップロード時にファイル保存に用いるテンポラリディレクトリ。 PHPの実行ユーザーが書きこみ可能である必要があります。
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20
同時にアップロードできるファイルの最大数。
参考
PHP Warning Illegal string offset 'foo'
PHPschedule2020-02-03
PHP Notice:Undefined indexの対処
PHPschedule2020-01-17
PHP compact関数で宣言していない変数の扱い
PHPschedule2020-01-15