【ITニュース解説】How to Fix the upload_max_filesize Error of a Server for a WordPress Site
2026年11月02日に「Dev.to」が公開したITニュース「How to Fix the upload_max_filesize Error of a Server for a WordPress Site」について初心者にもわかりやすく解説しています。
ITニュース概要
WordPressでファイルをアップロードできない時、PHPやサーバーのサイズ制限が原因だ。upload_max_filesize、post_max_size等の値をホスティングパネル、php.ini、.htaccess、Nginx設定ファイルで適切に設定変更して解決する。
ITニュース解説
WordPressサイトを運用していると、テーマやプラグイン、メディアファイルなどをアップロードしようとした際に、「アップロードできるファイルの最大サイズを超過しています」といったエラーメッセージに遭遇することがある。この問題は、WordPressサイトを動かしているサーバーやPHPというプログラミング言語が、一度に処理できるファイルのサイズに上限を設けているために発生する。特に自分でサーバーを管理しているWordPressサイト(自己ホスト型WordPress.orgサイト)では、これらの設定を自分自身で調整する必要がある場合が多い。
まず、この問題を解決するためには、現在のサーバーがどのような制限を設定しているかを確認することから始める。WordPressの管理画面にログインし、「ツール」メニューから「サイトヘルス」を選択し、さらに「情報」タブをクリックする。ここに「サーバー」と「PHP」というセクションがあり、それぞれを展開すると、upload_max_filesize、post_max_size、memory_limit、max_execution_timeといった重要な設定値が一覧表示される。また、WordPressのメディアライブラリのアップロード画面でも、現在の最大アップロードサイズを確認できる場合がある。
これらの設定値はそれぞれ異なる役割を持っている。upload_max_filesizeは、個々のファイルがアップロードできる最大サイズを直接制限する値だ。例えばこの値が256メガバイトと設定されていれば、それより大きいファイルはアップロードできない。post_max_sizeは、ファイルをアップロードする際のリクエスト全体の上限サイズを制限する。これにはアップロードされるファイルだけでなく、フォームの他のデータも含まれるため、upload_max_filesizeと同じか、それより少し大きい値に設定されているべきだ。memory_limitは、PHPがスクリプトを実行する際に利用できるメモリの最大量を定める。これは直接的なアップロードサイズ制限ではないものの、大きなファイルの処理には多くのメモリが必要となるため、不十分な場合、処理が失敗することがある。max_execution_timeは、PHPスクリプトが実行できる最大時間を秒単位で設定する。大きなファイルのアップロードや処理には時間がかかるため、この値が短すぎると途中で処理が中断(タイムアウト)してしまう可能性がある。これらの値を変更する際には、必要以上に大きな値を設定しないよう注意が必要だ。大きな値はサーバーのディスク容量、ネットワーク帯域、バックアップのコスト、そして処理時間といったリソースを無駄に消費する可能性があるからだ。
具体的な解決策はいくつかある。
一つ目の方法は、利用しているホスティングサービスのコントロールパネルを使うことだ。多くのレンタルサーバーではcPanelのようなコントロールパネルを提供しており、その中に「PHPバージョンの選択」や「MultiPHP INIエディター」といった機能があることが多い。これらを使って、WordPressサイトが利用しているPHPバージョンを選択し、upload_max_filesizeとpost_max_sizeの値を必要なサイズに更新する。この方法は、ホスティングサービスが推奨する形式で設定が変更されるため、比較的安全で初心者にも勧められる。変更を保存した後、数分待ってからサイトを再確認すると良い。もしコントロールパネルにこれらの設定変更オプションがない場合は、ホスティングサービス側でこれらの値を制限している可能性があるため、直接変更することは難しい。
二つ目の方法は、サーバー上のphp.iniファイルやPHP-FPMの設定ファイルを直接編集することだ。これはVPS(仮想プライベートサーバー)など、よりサーバーを自由に管理できる環境で用いられる。サーバーにSSHで接続し、まずphp -vコマンドで現在アクティブなPHPのバージョンを確認する。次にphp -i | grep -E 'Loaded Configuration File|Server API'コマンドで、PHPが読み込んでいるphp.iniファイルのパスと、PHPの動作モード(サーバーAPI)を確認する。DebianやUbuntuのようなLinux環境では、PHP-FPMの設定ファイルは/etc/php/8.3/fpm/php.iniのようなパスに存在する(「8.3」はPHPのバージョンによって変わる)。ウェブサーバーで使われるPHPとコマンドラインで使われるPHPでは、異なるphp.iniファイルを読み込むことがあるため、ウェブサイトで利用されている設定ファイルを正しく特定して編集することが重要だ。ファイルを編集し、upload_max_filesizeやpost_max_size、memory_limitなどの値を更新したら、変更を反映させるためにPHP-FPMサービスを再起動する必要がある。例えばsudo systemctl restart php8.3-fpmのようなコマンドを実行する。ApacheやNginxといったウェブサーバーだけを再起動しても、PHPの設定は反映されない場合があるので注意が必要だ。また、一部のホスティング環境では、WordPressのルートディレクトリに.user.iniというファイルを作成し、そこに設定を記述することで、そのディレクトリにのみPHPの設定を適用できる場合もある。
三つ目の方法は、.htaccessファイルを編集することだ。これはApacheというウェブサーバーを使っている場合に一般的な方法で、WordPressのルートディレクトリにある.htaccessファイルに、php_value upload_max_filesize 256Mやphp_value post_max_size 256Mといった行を追加する。memory_limitやmax_execution_timeも同様に設定できる。しかし、この方法はApacheウェブサーバーが特定のPHP設定ディレクティブを許可しており、PHPがmod_phpのような互換性のあるモードで動作している場合にのみ機能する。もしNginxを使っている場合や、PHP-FPMのようなCGI形式でPHPが動いている場合は、この設定は無視されるか、最悪の場合HTTP 500エラー(サーバー内部エラー)を引き起こす可能性がある。.htaccessファイルを編集する前には必ずバックアップを取り、問題が発生した際にすぐに元に戻せるようにしておくことが重要だ。また、wp-config.phpファイルにこれらの設定を直接記述したり、@ini_set関数を使ったりする方法は、信頼性が低く、効果がないことが多い。これは、アップロード制限がWordPressが動作を始める前に設定されることが多く、アプリケーションレベルでの実行時変更では間に合わないためだ。
四つ目の方法は、Nginxというウェブサーバーを使用している場合に発生する「413 Request Entity Too Large」エラーに対処するものだ。このエラーは、NginxがPHPやWordPressにリクエストを渡す前に、リクエストのサイズが大きすぎると判断して拒否していることを示している。この場合、Nginxの設定ファイル(通常は/etc/nginx/nginx.confや、サイト固有の設定ファイル)を編集し、http、server、またはlocationブロックの中にclient_max_body_size 256m;といった行を追加する必要がある。これにより、Nginxが受け入れるリクエストボディの最大サイズが引き上げられる。設定ファイルを変更した後は、sudo nginx -t && sudo systemctl reload nginxコマンドを実行して設定の構文を確認し、Nginxをリロードして変更を適用する。NginxとPHPの両方の制限がアップロードを許可していなければならないため、片方だけを上げても解決しない場合がある。また、Apacheウェブサーバーや、サイトの手前にあるリバースプロキシ、CDN(コンテンツデリバリーネットワーク)、セキュリティアプライアンスなども独自の制限を課している場合があるため、それらも確認する必要がある。
五つ目の方法は、上記の方法で解決できない場合や、共有ホスティングサービスで直接設定変更ができない場合に、ホスティングプロバイダーのサポートに問い合わせることだ。問い合わせる際は、単に「WordPressが壊れた」と言うのではなく、具体的で詳細な情報を提供すると、問題解決がスムーズに進む。具体的には、対象のドメイン名、使用しているPHPのバージョン、現在のupload_max_filesizeとpost_max_sizeの値、希望する新しい値、発生している正確なエラーメッセージ、そしてNginxや他のプロキシが413エラーを返しているかどうか、といった情報だ。もしホスティングサービスがこれ以上の制限を許可しない場合は、彼らが提供する大容量ファイルアップロードの特別なワークフローや、オブジェクトストレージサービスとの連携機能を利用することを検討しよう。
最後に、設定変更後のトラブルシューティングについても知っておくと良い。もし設定を変更したのに問題が解決しない場合は、まずサイトで使われているPHPのバージョンが正しいか、そして関連するPHP-FPMサービスが正しく再起動されたかを再度確認する。また、より優先度の高い別の設定が上書きしている可能性も考えられる。もし.htaccessファイルを編集した後でサイトが500エラーを返すようになったら、すぐにバックアップから元のファイルを復元し、コントロールパネルやPHP-FPMの設定など、別の方法を試す必要がある。エラーが413の場合は、Nginxだけでなく、プロキシやCDNのボディサイズ制限も確認する。小さなファイルはアップロードできるのに、大きなファイルになると途中でタイムアウトする場合は、プロキシのタイムアウト設定、サーバーのディスク空き容量、ネットワークの安定性、そしてPHP-FPMのログを確認する。max_execution_timeだけを上げても根本的な原因が解決しない場合がある。もしアップロード自体はWordPressに到達するものの、その後の処理で失敗する場合は、アップロードディレクトリのパーミッション(権限)、ディスククォータ(割り当てられた容量)、画像処理用のメモリ量、そしてWordPressのデバッグログを確認してみると良いだろう。
これらの変更が完了したら、必ず実際に目的のサイズに近いテストファイルをアップロードしてみて、メディアライブラリに正しく表示されるかを確認する。テストが成功し、問題が解決したら、不要なテストファイルは削除しておく。そして、新しい制限値は、実際に必要な作業量やストレージポリシーに合わせて、必要最小限にとどめることが、サーバーリソースの効率的な利用につながる。これらの手順を踏むことで、WordPressでのファイルアップロードに関する多くの問題は解決できるはずだ。