問題の概要新しいテーマや15MBの高解像度ヒーロー画像をアップロードしようとした際、WordPressに拒否されることがあります。画面に赤いバーが表示され、The uploaded file exceeds the upload_max_filesize directive in php.ini というエラーメッセージが出力されます。これはWordPressのバグではありません。サーバーのPHP設定によって、巨大なファイルがストレージを圧迫しないように設けられたセキュリティ上の上限設定です。
多くのホスティングプロバイダーでは、デフォルトの上限をわずか2MBまたは8MBに設定しています。Elementorのようなモダンなページビルダーや、容量の大きいプラグインは20MBを超えることが多いため、遅かれ早かれこの壁に突き当たることになります。
現在の制限値を確認するコードの修正を始める前に、サーバーで許可されている正確な値を確認しましょう。WordPressダッシュボードの「メディア > 新規追加」に移動します。アップロードボックスのすぐ下に、「最大アップロードサイズ: X MB」というテキストが表示されているはずです。
コマンドラインを好む場合は、次のコマンドを実行して制限値を確認できます:
php -i | grep upload_max_filesize
あるいは、WordPressのルートフォルダに <?php phpinfo(); ?> と記述した info.php というファイルを配置してください。ブラウザで yourdomain.com/info.php を開き、upload_max_filesize と post_max_size を検索します。この2つの値は、エラーを解決するためにセットで調整する必要があります。
制限値を増やす方法### 1. php.iniファイルを編集する自身でVPSを管理している場合や、XAMPPなどのローカル環境を使用している場合、これが最もスマートな解決策です。使用中の php.ini ファイルを見つける必要があります。PHP 8.2を実行している標準的なUbuntuサーバーの場合、通常は /etc/php/8.2/fpm/php.ini にあります。
以下の特定の行を探し、数値を増やします。例えば、64MBのファイルを許可するには次のように記述します:
upload_max_filesize = 64M
post_max_size = 70M
memory_limit = 128M
**プロのアドバイス:**常に post_max_size を upload_max_filesize より少し大きく設定してください。「post」サイズには、ファイル本体に加えてリクエストで送信される他のフォームデータも含まれるためです。保存後、設定を反映させるためにサービスを再起動します:
# Apacheの場合
sudo systemctl restart apache2
# Nginx/PHP-FPMの場合
sudo systemctl restart php8.2-fpm
2. .htaccessファイルを使用する(Apache)共用サーバーを利用していてメインのPHP設定にアクセスできない場合は、WordPressのルートディレクトリにある .htaccess ファイルが役立ちます。ファイルの最下部に以下の行を追加してください:
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value memory_limit 128M
php_value max_execution_time 300
注意:ホストがFastCGIを使用している場合、これが原因で「500 Internal Server Error」が発生することがあります。サイトが表示されなくなった場合は、追加した行を削除してアクセスを復旧させてください。
3. Nginxの設定を更新するPHPの設定を修正しても、Nginxが「413 Request Entity Too Large」エラーでリクエストをブロックする場合があります。サイトの設定ファイル(/etc/nginx/sites-available/ 内にあります)を編集して、より大きなアップロードを許可するようNginxに指示する必要があります:
server {
...
client_max_body_size 64M;
...
}
sudo nginx -s reload を実行してNginxをリロードすれば完了です。
4. wp-config.phpによる方法これは最終手段です。upload_max_filesize はシステムレベルの設定であるため、セキュアなモダン環境ではほとんど機能しませんが、他に選択肢がない場合は試す価値があります。「編集が必要なのはここまでです」という行の前に以下を追加します:
@ini_set( 'upload_max_filesize' , '64M' );
@ini_set( 'post_max_size', '64M');

