2026年5月20日
2026年5月20日
WordPressのPHP設定を最適化する方法
はじめに
WordPressのパフォーマンスと安定性はPHP設定に大きく依存します。メモリ不足によるエラー・アップロードサイズ制限・OPcacheの有効化など、適切なPHP設定でサイトの速度と安定性を改善できます。
症状・原因
- 「Fatal error: Allowed memory size exhausted」エラーが発生する
- 大きな画像ファイルがアップロードできない(512KB上限など)
- 管理画面の操作でタイムアウトエラーが発生する
- PHPが遅く、OPcacheが有効になっていない
解決手順
ステップ1:現在のPHP設定を確認する
// WordPressルートに一時ファイルを作成(確認後は必ず削除)
// phpinfo.php
<?php phpinfo(); ?>
# コマンドラインでPHP設定を確認
php -i | grep -E "memory_limit|max_execution_time|upload_max_filesize|post_max_size|opcache"
# PHP設定ファイルの場所を確認
php --ini
# WordPressが認識しているメモリを確認
wp eval "echo WP_MEMORY_LIMIT . PHP_EOL; echo WP_MAX_MEMORY_LIMIT . PHP_EOL;"
ステップ2:php.iniの設定を変更する
; php.ini(設定ファイルの場所はサーバーによって異なる)
; メモリ制限(WordPressの推奨は最低64MB、推奨256MB)
memory_limit = 256M
; スクリプト実行時間(長いインポート処理に対応)
max_execution_time = 300
; 入力処理時間
max_input_time = 300
; 入力変数の最大数(多くのカスタムフィールドを持つサイト用)
max_input_vars = 3000
; ファイルアップロード設定
upload_max_filesize = 64M
post_max_size = 64M ; upload_max_filesize より大きくする
; エラー表示(本番環境ではオフ)
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
ステップ3:WordPress側でメモリを設定する
// wp-config.php: PHP設定をWordPressから上書き
// WordPressのメモリ制限(php.iniより小さい値が適用される)
define('WP_MEMORY_LIMIT', '256M');
// 管理画面のメモリ制限(通常フロントより多く必要)
define('WP_MAX_MEMORY_LIMIT', '512M');
# .htaccess でPHP設定を変更(共有ホスティング向け)
php_value memory_limit 256M
php_value max_execution_time 300
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_input_vars 3000
ステップ4:OPcacheを有効化・最適化する
; php.ini: OPcache設定(PHPスクリプトのコンパイル済みキャッシュ)
[opcache]
opcache.enable = 1
opcache.enable_cli = 0
opcache.memory_consumption = 128 ; キャッシュメモリ(MB)
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000 ; キャッシュするファイル数
opcache.revalidate_freq = 60 ; 変更チェック間隔(秒)
opcache.validate_timestamps = 1 ; 本番では0に(手動クリアが必要)
opcache.save_comments = 1 ; WordPress のアノテーションに必要
opcache.fast_shutdown = 1
// functions.php: デプロイ時にOPcacheをクリア
add_action('upgrader_process_complete', function (): void {
if (function_exists('opcache_reset')) {
opcache_reset();
}
});
// WP-CLIでOPcacheをクリア
// wp eval "opcache_reset(); echo 'OPcache cleared';"
ステップ5:PHP-FPMのワーカー数を最適化する
; /etc/php/8.2/fpm/pool.d/www.conf
[www]
; プロセス管理方式
pm = dynamic
; 最大ワーカー数(RAM / 各ワーカーのメモリ使用量)
; 例: 2GB RAM、各ワーカー40MB → 50ワーカー程度
pm.max_children = 50
; 起動時のワーカー数
pm.start_servers = 5
; アイドル最小ワーカー数
pm.min_spare_servers = 5
; アイドル最大ワーカー数
pm.max_spare_servers = 35
; ワーカーの最大リクエスト数(メモリリーク防止)
pm.max_requests = 500
; ステータスページ(モニタリング用)
pm.status_path = /fpm-status
# PHP-FPMの設定を再読み込み
sudo systemctl reload php8.2-fpm
# PHP-FPMの状態を確認
sudo systemctl status php8.2-fpm
# ワーカーの使用状況を確認
curl http://localhost/fpm-status?full 2>/dev/null | grep -E "state|requests"
注意事項
- 共有ホスティングでは
php.iniを直接編集できない場合があります。.htaccessのphp_valueディレクティブか、コントロールパネルから設定してください memory_limitを際限なく上げるとサーバーメモリが枯渇します。まずプラグインの最適化やクエリ削減を検討し、それでも不足する場合に増やしてください- OPcacheの
validate_timestamps = 0は最高パフォーマンスですが、ファイル変更後に手動でキャッシュクリアが必要です。開発環境では1を推奨します
まとめ
php.ini で memory_limit=256M・upload_max_filesize=64M・max_execution_time=300 を設定し、wp-config.php で WP_MEMORY_LIMIT を上書きします。OPcacheは opcache.memory_consumption=128・max_accelerated_files=10000 で有効化し、プラグイン更新時に opcache_reset() で自動クリアします。PHP-FPMは pm.max_children をRAM容量から計算して設定します。