WordPress のメディアをアップロードする時にサイズの大き過ぎる画像をあげようとすると「***.jpg は、このサイトのアップロードサイズ上限を超えています。」と表示されアップロードできないことがあります。
今回は PHP の設定を変更してファイルのアップロード上限を変更してみます。
PHP の設定ファイル(php.ini)の場所を探す
アップロードサイズの上限を変更するには、PHP の設定ファイルである php.ini を書き換える必要がありますが、まずはこのファイルの場所がどこにあるのかを以下のコマンドで探します。
php -i | grep "php.ini"
コマンドを実行してみると、
Configuration File (php.ini) Path => /etc/php/7.4/cli
Loaded Configuration File => /etc/php/7.4/cli/php.ini
こんな感じで表示されます。今回の場合は/etc/php/7.4/cli/php.ini
にあるようです。
php.ini ファイルを編集してアップロードサイズを変更する
ファイルの場所がわかったので、vi エディタで編集してみましょう。
ファイルの編集
vi /etc/php/7.4/cli/php.ini
ファイルを開いた後、すぐにスラッシュ(/
)を押すと検索することができるので、以下の3つを検索します。
- memory_limit
- post_max_size
- upload_max_filesize
memory_limit > post_max_size > upload_max_filesize
の大きさ順に設定しなくてはならない点に注意してください。
vi エディタで修正したい場合は、a
を押して INSERT MODE にしてから修正を行います。修正が終わったら esc
キーを押して、再度修正箇所を探した後にa
キーを押して修正しましょう。
memory_limit
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128MB
メモリの上限。PHPが処理するときに使うメモリの量なので、後述する post_max_size などより小さいと処理しきれません。-1
になっている場合、無制限に使用します。また、行頭のセミコロン(;
)はコメントアウトです。
この例では 128MB
= 128メガ バイトとなっています。
post_max_size
; 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
POST できる最大サイズ。僕たちユーザーからサーバーにデータを送りつけた時に PHP が受け入れ可能な最大サイズのように思ってもらっていいかもしれません。memory_limit
よりも小さい値を設定しましょう。
この例では 8M
= 8メガバイトとなっています。
upload_max_filesize
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M
アップロードファイルの最大サイズ。post_max_size
よりも小さい値を設定しましょう。サーバーにデータを送りつける量よりもアップロードできる最大サイズが大きかったらおかしなことになっちゃいますからね!
この例では 2M
= 2メガバイトとなっています。ちょっと大きい画像だと厳しそうですね。
サーバー・PHP の再起動
サーバーを再起動しましょう。お使いの環境にあわせて再起動してください。下記は一例です。
systemctl restart apache2
php-fpm を使っているなら下記。
systemctl reload php-fpm