どうも、こっこです。
今回はWordpressでファイルのアップロードサイズがデフォルトだと小さく、上限を上げないと公開したいファイルのアップロードができない場合の対処方法を記事にまとめました。
いろんなサイトの巡回をしてPHPのファイルサイズ上限の変更をいろいろと試したのですが、実際には変更ができませんでした。しかし、結果的にこれだけやっておけというのを見つけました。
目次
問題点と環境
問題点
WordPressにて画像だけではなく、動画ファイルやzipファイルをアップロードしたいときにこのような表示になっていました。
「最大アップロードサイズ」は2MBということで、特になにも操作していないデフォルトのWordpressでこの状態だったので、少し解像度の良い画像ですらアップロードできない状態でした。
そこでGoogleで検索し、WordpressやPHPでの各種操作方法を探しいろいろと試してみました。
環境
VPS業者 | Conoha VPS |
OS | Cent OS Stream9 |
PHP Ver | 8.0.30 |
WordPress Ver | 6.7.1 |
ありふれた対処法
まずはphpinfoを確認する
まずは現状のPHP設定がどのような状態になっているかを確認しましょう。
ドキュメントルート直下か、Webサイトを確認できるディレクトリにinfo.phpとでも名前を付けてファイルを作成します。
vi /var/www/html/info.php
viコマンド等でエディターを開いたら以下の1行を挿入して保存します。
<?php phpinfo(); ?>
保存が完了したらブラウザで対象URLにアクセスしてWebページを確認すると以下のような表示になります。
このページ内では以下の3点がどのような設定になっているかを確認しましょう。
Ctrl(Cmd) + F等でページ内検索を行うと便利です。
- memory_limit
- post_max_size
- upload_max_filesize
私の場合はmemory_limitが128M、post_max_sizeが8M、upload_max_filesizeが2Mでした。
memory_limitはともかく、post_max_sizeとupload_max_filesizeの上限を上げないと仕事が進まないので変更作業が必要です。
方法①PHP設定ファイルを変更する
まずは一番必要な方法としてPHPの設定ファイル自体の数値を変更します。先ほど確認した現在のPHP情報のWebページはこのphp.iniから情報を取得して表示しています。
php.iniの設置場所はOSや環境によって異なりますので探してください。
vi /etc/php.ini
php.iniを開いたら先程のpost_max_sizeとupload_max_filesizeがどこにあるのか検索して移動します。
viコマンドで編集している場合はINSERTから抜けた状態で「/(スラッシュ)」を入力してから検索文字を入力することで対象の場所に移動することができます。
設定位置が見つかれば最大数値を変更しましょう。しばらくは困ることがない500MBとか1GBに設定しておくと便利です。
post_max_size = 8M
↓
post_max_size = 500M
upload_max_filesize = 2M
↓
upload_max_filesize = 500M
変更が完了したらviから抜けてApacheを一度再起動しておきます。
systemctl restart httpd
これで改めてphpinfoをブラウザで確認したところ、変更した500Mに変わっていませんでした。
方法②.htaccessを変更する
変わらなかったので次の方法です。
WordPressを設置しているディレクトリに移動し、.htaccessというファイルの編集をおこないます。
vi .htaccess
.htaccessを開いたらファイルの一番下に以下を追加します。
#メモリ使用量の上限
php_value memory_limit 128M
#POSTデータの最大サイズ ※合計サイズ
php_value post_max_size 500M
#1ファイルあたりの最大アップロードサイズ
php_value upload_max_filesize 500M
以下の画像ではそれぞれ20Mになっていますが、この各箇所を上限変更したい数値に変更してください。
保存して戻ってから再度Apacheを再起動します。
systemctl restart httpd
これでphpinfoまたはWordpress上での最大アップロードサイズが変わっているかブラウザで確認したところ「Internal Server Error」になり、エラー表示で正常なWebページの表示ができませんでした。
先ほど編集で追加した行は削除して元通りにして戻ります。
方法③wp-config.phpを変更する
次の方法はWordpressディレクトリ内にあるwp-config.phpを編集します。
vi ./wp-config.php
開いたらファイル内の一番下に以下の3行を追加します。
@ini_set( 'memory_limit', '128M' );
@ini_set( 'upload_max_filesize' , '500M' );
@ini_set( 'post_max_size', '500M');
こちらも編集が完了したら念の為Apacheを再起動しておきます。
systemctl restart httpd
これも同じくphpinfoまたはWordpress上での最大アップロードサイズが変わっているかブラウザで確認したところ、エラーにはならないものの特に変化がありませんでした。
結局これだけやればOK
Webで検索したよく提示される上記の3つの方法を試しても変わらなかったので、結局はこれだけやればよいというものを見つけました。
やること①
まずは先程の方法①のphp.iniの編集は必須になります。
php.iniを開き、開いた先で上限を変更したい箇所に移動して数値を変更してください。
// php.iniを開く
vi /etc/php.ini
//その先で数値を変更したい箇所を変更する
post_max_size = 8M
↓
post_max_size = 500M
upload_max_filesize = 2M
↓
upload_max_filesize = 500M
編集したら例のごとくApacheの再起動はしておきましょう。
systemctl restart httpd
やること②
php.iniの編集が完了したら次はサーバーの再起動を行いましょう。
結局Apacheの再起動をしたりいろいろと確認しましたが、サーバー自体を再起動することで全てが解決しました。
スーパーユーザー状態で以下のコマンドを実行するだけで再起動を実行できます。
reboot
サーバー自体を再起動してしまうので、なにか動かしているシステムや今回変更したWordpress以外のWebページも全て止まりますのでタイミングにはご注意ください。
数分待つことでコマンドも実行できる状態になり、Apacheも起動してWebページも見れるようになります。
WordPressの「メディアを追加」を確認するとしっかり変更後の数値に表示が変わっていました。
phpinfoも確認するとこちらも変更後の数値に変わっています(memory_limitだけ変更していない)。
まとめ
いかがだったでしょうか?
今回はPHP、Wordpressでアップロードファイルサイズの上限変更の方法をまとめました。
環境ややりたいことに応じていろんな対応方法があると思いますが、結局は手っ取り早くphp.iniを変更してサーバーを再起動するという力技で解決しました。
私がこの処理を行うときはサーバー環境を整えてWordpressをインストールしてすぐに実行するため、まだお客さんが閲覧する状態ではないところで実行しているのでこのやり方ですぐに解決しています。
この方法が誰かの役に立てれば幸いです。
ではまた!