WordPress で画像をアップロードしようとしたら、失敗してしまうことがありました。原因は、画像の大きさが PHP の設定の上限を超えていたことです。自宅サーバー(AlmaLinux、php-fpm)の php.ini で上限を引き上げたときの設定をまとめます。
レンタルサーバーでは、php.ini を直接編集できないことが多く、管理画面の PHP の設定で同じ項目を変えます。
変える3つの項目
| 項目 | 意味 |
|---|---|
upload_max_filesize | 1つのファイルの大きさの上限 |
post_max_size | 1回の送信(POST)で送れるデータ全体の上限 |
memory_limit | PHP が1回の処理で使えるメモリの上限 |
大きさは、次の関係にしておきます。
upload_max_filesize ≦ post_max_size ≦ memory_limitファイルは POST のデータの一部として送られるので、post_max_size が upload_max_filesize より小さいと、ファイルの上限を上げても送れません。また、WordPress はアップロードした画像からいくつかの大きさの画像を作るので、memory_limit が小さいと、大きい画像のときにその処理で失敗することがあります。
php.ini を書き換える
AlmaLinux では、設定ファイルは /etc/php.ini です。
sudo vi /etc/php.ini次の行を探して、値を変えます。
; 1つのファイルの上限
upload_max_filesize = 30M
; POST で送れるデータ全体の上限(upload_max_filesize 以上にする)
post_max_size = 35M
; PHP が使えるメモリの上限(上の2つより大きくする)
memory_limit = 128M
; 1回の処理にかけてよい時間(秒)
max_execution_time = 300max_execution_time は、大きい画像の処理に時間がかかって途中で打ち切られないように、長めにしています。
設定を反映する
PHP を php-fpm で動かしているので、php-fpm を再起動します。Apache の再起動はいりません。
sudo systemctl restart php-fpmphp-fpm を使わず、Apache の中で PHP を動かしている構成なら、Apache(httpd)を再起動します。
変わったか確かめる
WordPress の管理画面で「メディア」→「新規メディアファイルを追加」を開くと、「最大アップロードサイズ」が表示されます。ここが 30 MB になっていれば反映されています。
変わらないときは、php-fpm の設定ファイル(/etc/php-fpm.d/www.conf)に php_value[upload_max_filesize] などの行がないか確かめます。ここに書かれた値は、php.ini より優先されます。
注意点
- 値は必要な分だけにする:
memory_limitは1回の処理ごとの上限なので、大きくしすぎると、同時にたくさんの処理が動いたときにサーバーのメモリが足りなくなることがあります - Cloudflare を通しているときは、そちらの上限もある:
Cloudflare の無料プランでは、1回に送れるデータの大きさが 100MB までです。php.iniをそれ以上にしても、Cloudflare を通るときに断られます(「Cloudflareとは?仕組みと無料プランでできること」) - 画像は小さくしてから上げるのも手:
ブログに載せる画像は、アップロードの前に縮小しておくと、上限にかかりにくくなり、ページも軽くなります
まとめ
- 画像がアップロードできないときは、
php.iniのupload_max_filesize、post_max_size、memory_limitを見る - 大きさは
upload_max_filesize≦post_max_size≦memory_limit - php-fpm なら php-fpm を再起動し、WordPress の「最大アップロードサイズ」で確かめる
- Cloudflare の無料プランを通すときは、100MB が上限



コメント