2026年5月20日
2026年5月20日
Maximum execution timeエラーを解決する方法【PHP実行時間超過】
はじめに
「Fatal error: Maximum execution time of 30 seconds exceeded」——このエラーはPHPスクリプトの実行時間が設定の上限(デフォルト30秒)を超えた場合に発生します。インポート処理・バックアップ・大量のデータ処理・重いプラグインの更新時によく発生します。
症状・原因
実行時間超過エラーの特徴:
- 大量のデータをインポートしているときにエラーが発生する
- WordPressのアップデート中にエラーになる
- バックアッププラグインがタイムアウトする
- WooCommerceの商品一括処理でエラーになる
- 特定のページを表示するのに長時間かかりエラーになる
解決手順
ステップ1:wp-config.phpで設定(推奨・最も効きやすい)
// wp-config.phpに追加(データベース設定より前の行に書く)
set_time_limit(300); // 300秒(5分)に設定
// または定数で設定
define('WP_MAX_EXECUTION_TIME', 300);
set_time_limit(0)にすると無制限になりますが、ループ処理でサーバーに負荷をかける危険があるため、適切な数値を設定してください。
ステップ2:.htaccessで設定(Apache)
# .htaccessに追加
php_value max_execution_time 300
php_value max_input_time 300
ステップ3:php.iniで設定(VPS・専用サーバー)
; php.iniに追加または変更
max_execution_time = 300
max_input_time = 300
変更後はPHP-FPMを再起動:sudo systemctl restart php8.1-fpm
ステップ4:functions.phpで設定
テーマのfunctions.phpに追加することでWordPress起動時に設定されます:
// functions.phpに追加
add_action('init', function() {
set_time_limit(300);
});
ステップ5:各ホスティングでの設定方法
エックスサーバーの場合:
1. サーバーパネル → 「PHP設定」→「PHP設定編集」
2. max_execution_time = 300に変更
ConoHaの場合:
1. コントロールパネル → 「サイト管理」→「PHP設定」
2. max_execution_timeの値を変更
ロリポップの場合:
1. ユーザー管理画面 → 「サーバーの管理・設定」→「PHP設定変更」
2. 実行時間の設定を変更
処理自体を最適化する
タイムアウトを増やすだけでなく、処理を最適化することも重要です:
バッチ処理に分ける:
// 一度に大量処理せず、ページリロードで分割処理
$batch_size = 100;
$offset = isset($_GET['offset']) ? intval($_GET['offset']) : 0;
$posts = get_posts([
'posts_per_page' => $batch_size,
'offset' => $offset,
]);
// 処理...
if (count($posts) === $batch_size) {
// 次のバッチへリダイレクト
wp_redirect(add_query_arg('offset', $offset + $batch_size));
}
WP-CLIを使う(SSH環境):
# WP-CLIはWEBサーバーのタイムアウトに縛られない
wp import large-file.xml --authors=create
wp search-replace 'old.com' 'new.com'
まとめ
Maximum execution timeエラーはset_time_limit(300)をwp-config.phpに追加することで解決できます。共有ホスティングではphp.iniを直接変更できない場合が多いため、.htaccessまたはfunctions.phpでの設定が有効です。根本的な解決には処理のバッチ分割やWP-CLIの活用も検討してください。
関連記事: