目次
前提
- さくらレンタルサーバー(スタンダード版)
- 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 は、
https://www.php.net/manual/ja/ini.core.php#ini.post-max-sizepost_max_size
よりも大きく する必要があります。 integerを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。 POSTデータの大きさが、post_max_sizeより大きい場合、 $_POST と $_FILES superglobals は空になります。この事象は、いくつかの方法で検出することができます。 例えば、$_GET 変数をデータを <form action=”edit.php?processed=1″>のように 処理するスクリプトに渡し、 $_GET[‘processed’] が設定されているかどうかを 確認する方法があります。
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_limit | 128MByte |
post_max_size | 8MByte |
upload_max_filesize | 5MByte |
設定値の検討
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になります…
以上!