[WordPress]メディアライブラリのアップロード上限を上げる

前提

  • さくらレンタルサーバー(スタンダード版)
  • WordPressのインストール:レンタルサーバーコントロールパネルからクィックインストール
  • WordPressのバージョン:5.4.1

問題

現在、さくらレンタルサーバー(スタンダード版)を使ってサイトを管理している。さくらレンタルサーバー(スタンダード版)では、ストレージ容量は100GBまで利用できるので、想定している画像データや動画データを保存するには問題はないが、アップロードしようとするファイルサイズが大きくなると、5MB(デフォルト)以上のデータをアップロードできない。

ネットで調べると、この値は現在のバージョンのWordPressの設定では変更できず、php.iniの設定値を変更すればよいとあるが、ちゃんと設定項目内容についても調べてみた。


php.iniの変更の前に…

現在のphp.iniの位置と内容

さくらレンタルサーバーではphp.iniはどこにあるかというと、デフォルトでは存在しない。(少なくとも私の環境では…)

では、どこで設定すればよいかというと、コントロールパネルへログインして、
[スクリプト設定] → [PHPini設定]から設定が可能になる。

この画面で作成されるphp.iniのパス(/home/<初期ドメイン>/www/php.ini)と、内容が確認できる。

現時点では、何も設定していないので、真っ白である。

設定すべき項目

ネットで調べると、下記の項目を設定すればよさそうである。

  • memory_limit
  • post_max_size
  • upload_max_filesize

何も考えずに、他の人の設定している値でこれらの項目を設定しても良いが、どこに影響するか分からないので、まず、各項目の意味について調べてみる。

memory_limit

スクリプトが確保できる最大メモリをバイト数で指定します。この命令は、 正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。 もし、使用可能メモリに制限を設けたくない場合は、 ここに -1 を指定してください。

https://www.php.net/manual/ja/ini.core.php#ini.memory-limit

PHPがスクリプトを実行する際に、スクリプトが使用できるメモリの最大サイズ。この説明からみれば、この値をむやみに大きくする事はよくなさそうだ。

post_max_size

POSTデータに許可される最大サイズを設定します。この設定は、ファ イルアップロードにも影響します。大きなファイルをアップロード するには、この値を upload_max_filesize より大きく設定する必要があります。 一般的に memory_limit は、 post_max_sizeよりも大きく する必要があります。 integerを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。 POSTデータの大きさが、post_max_sizeより大きい場合、 $_POST と $_FILESsuperglobals は空になります。この事象は、いくつかの方法で検出することができます。 例えば、$_GET 変数をデータを <form action=”edit.php?processed=1″>のように 処理するスクリプトに渡し、 $_GET[‘processed’] が設定されているかどうかを 確認する方法があります。

https://www.php.net/manual/ja/ini.core.php#ini.post-max-size

HTTPのPOSTメソッドで指定できるデータの上限値ですね。メディアへアップロードする場合はPOSTメソッドが使われているという事か。

そして、

memory_limitの値 > post_max_sizeの値 > upload_max_sizeの値

となるように設定する必要がある。

upload_max_filesize

アップロードされるファイルの最大サイズ

https://www.php.net/manual/ja/ini.core.php#ini.upload-max-filesize

これが、WordPressのメディアの「最大アップロードサイズ」に該当するようだ。

現在の設定値の確認

さて、WordPressのメディアの「最大アップロードサイズ」を変更するには、php.iniの「upload_max_filesize」を変更すればよさそうだが、

memory_limitの値 > post_max_sizeの値 > upload_max_sizeの値

の関係を満たす様にする必要があるので、他の値がどうなっているかを知りたい。

ターミナル接続(SSH接続)して確認

さくらレンタルサーバーには、下記のヘルプに従えば、SSHで接続できる。

SSHについて

https://help.sakura.ad.jp/206054152/

自分の場合は、TeraTerm(v4.92)で接続してみた。

まずは、phpのバージョンを確認。(というより、PHPの動作確認)

% php -v
PHP 7.4.4 (cli) (built: Apr 13 2020 21:11:31) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.4, Copyright (c), by Zend Technologies

各項目の値の確認。

% php -i | grep memory_limit
memory_limit => 128M => 128M
% php -i | grep post_max_size
post_max_size => 8M => 8M
% php -i | grep upload_max_filesize
upload_max_filesize => 5M => 5M
%

表にまとめると下記の様になる。

項目
memory_limit128MByte
post_max_size8MByte
upload_max_filesize5MByte
デフォルト値

設定値の検討

upload_max_filesize

メディアの最大アップロードサイズを変更するには、この設定を変更すればよい。自分の場合は、動画をアップロードできるようにしたいので、

100M

とする。

post_max_size

この値は、upload_max_filesizeより大きくする必要がある。POST時に実データサイズ+メタデータ分あれば良いと思われるので、デフォルト値の差分3MB程度を追加した値、

103M

とする。

memory_limit

この値は、upload_max_filesizeより大きければ良いので、デフォルトの128MBでもよいが、100MBのファイルをPHPスクリプトがメモリに展開する事を考えると、upload_max_filesizeの増加分以上は足しておいた方が良いと思われるので、

256M

とする。


php.iniの変更

設定する値も決まったので、php.iniを変更する。

コントロールパネルのPHP.ini設定からPHP.iniの内容に下記の設定を追加して、「保存する」ボタンをクリックする。

memory_limit = 256M
post_max_size = 103M
upload_max_filesize = 100M

「保存する」ボタンをクリックしてもあまり画面が変わらない…。

左側メニューの[Webサイト/データ] → [ファイルマネージャー]を選択して、ファイルマネージャーを起動する。

ドキュメントルートに「php.ini」がある事を確認して、ダブルクリックしてプレビューを確認して、設定内容が変更されている事を確認する。


WordPressのメディアアップロードサイズの変更の確認

WordPressのダッシュボードの[メディア]→[新規追加]で最大アップロードサイズが、更新されている事を確認する。

うむうむ、うまく行ったようだ。

【補足】php.iniが空の場合

さくらレンタルサーバーで空のphp.iniをドキュメントルートに置いた場合どうなるかと言うと…

最大アップロードサイズは5MBでなく2MBになります…


以上!