【解決】 WordPress: Max execution time exceeded の解決方法と原因 | WordPress/PHP トラブルシューティング

WordPressサイトで「Max execution time exceeded」エラーに遭遇し、お困りではありませんか?ご安心ください。このエラーはWordPressとPHPの設定が原因で発生することが多く、多くの場合、簡単な設定変更で解決できます。この記事では、Windowsユーザー向けに、このエラーの概要から、最も速く解決するための具体的な手順、そして将来的な再発防止策までを、ロジカルにわかりやすく解説します。

まずは結論から。このエラーの最も直接的な解決策は、PHPスクリプトの最大実行時間を延長することです。今すぐサイトを復旧させたい場合は、以下の「【最速】今すぐ試すべき解決策」から読み進めてください。

1. WordPress: Max execution time exceeded とは?(概要と緊急度)

「Max execution time exceeded」エラーは、その名の通り、WordPressを動かしているPHPスクリプトが、設定された最大実行時間(通常は30秒)を超過してしまったときに発生します。

  • ウェブサーバーは、悪意のあるスクリプトや無限ループに陥ったスクリプトがサーバーリソースを独占するのを防ぐため、PHPスクリプトの実行時間に上限を設けています。
  • しかし、大量のデータを扱う処理(画像のアップロード、テーマ・プラグインのインストールや更新、データベースのインポート・エクスポートなど)や、処理の重いプラグインを使用している場合など、正当な処理であってもこの上限を超えてしまうことがあります。

このエラーが発生すると、ウェブサイトの一部または全体が表示されなくなったり、管理画面での操作が完了しなくなったりするため、緊急度は中〜高と言えます。迅速な対応が求められます。

2. 【最速】今すぐ試すべき解決策

WordPressサイトの「Max execution time exceeded」エラーを今すぐ解決するには、PHPの最大実行時間設定「max_execution_time」を延長するのが最も直接的で効果的な方法です。Windows環境での具体的な手順を説明します。

解決策1:WordPressのwp-config.phpファイルを編集する

この方法は、WordPressのコアファイルを編集することで、PHPの実行時間を個別に設定するものです。FTPクライアントや、ローカル環境の場合はファイルエクスプローラーを使ってWordPressのルートディレクトリにアクセスし、wp-config.phpファイルを編集します。

ここでは、WindowsのコマンドプロンプトやPowerShellを使って、ファイルを直接開く手順を示します。

  1. WordPressのインストールディレクトリに移動します。
    例えば、XAMPPを使っている場合は通常C:\xampp\htdocs\your-wordpress-site、それ以外の場合はWordPressがインストールされている場所に合わせてください。

    cd "C:\path\to\your\wordpress\installation"
  2. wp-config.phpファイルをメモ帳で開きます。
    notepad wp-config.php
  3. ファイル内に以下のコードを追記します。
    このコードは、/* That's all, stop editing! Happy publishing. */という行の直前に追記するのが一般的です。300は秒数を示し、ここでは300秒(5分)に設定しています。必要に応じてこの値を調整してください。

    set_time_limit(300);

    例:wp-config.phpの編集イメージ

    /** Sets up WordPress vars and included files. */
    require_once ABSPATH . 'wp-settings.php';
    
    set_time_limit(300); // ★この行を追加または変更します
    
    /* That's all, stop editing! Happy publishing. */
  4. ファイルを保存し、閉じます。
  5. Webサーバー(Apacheなど)を再起動します。
    ローカル環境(XAMPPなど)の場合は、XAMPPコントロールパネルからApacheを再起動してください。レンタルサーバーの場合は、通常この手順は不要ですが、場合によっては管理画面からPHPの再起動を行う必要があるかもしれません。

この変更後、WordPressサイトにアクセスし、エラーが解消されているか確認してください。多くの場合、これで問題は解決します。

解決策2:.htaccessファイルを編集する(Apache利用時)

WebサーバーがApacheの場合、WordPressのルートディレクトリにある.htaccessファイルに設定を追記することでも、PHPの実行時間を変更できます。FTPクライアントなどでファイルにアクセスし、以下の行を追記します。

php_value max_execution_time 300

この方法は、共有レンタルサーバーなどphp.iniファイルを直接編集できない環境で有効な場合があります。.htaccessファイルの編集は慎重に行い、必ずバックアップを取ってから作業してください。

解決策3:php.iniファイルを直接編集する(ローカル環境やVPS/専用サーバー向け)

XAMPPなどのローカル開発環境や、VPS・専用サーバーを利用している場合は、PHPの設定ファイルであるphp.iniを直接編集するのが最も確実な方法です。

  1. php.iniファイルの場所を特定します。
    XAMPPの場合、通常はC:\xampp\php\php.iniにあります。他の環境では、PHP情報ページ(phpinfo())で確認できます。

    # phpinfo() を含むPHPファイルを作成し、ブラウザでアクセスして確認
    # 例えば、WordPressのルートディレクトリにinfo.phpというファイルを作成し、
    # 以下を記述して保存:
    # <?php phpinfo(); ?>
    # その後、ブラウザで http://your-site.com/info.php にアクセスし、
    # "Loaded Configuration File" の項目を確認。
  2. php.iniファイルをメモ帳で開きます。
    notepad C:\xampp\php\php.ini

    (パスはあなたの環境に合わせてください)

  3. max_execution_timeという記述を探し、値を変更します。
    通常は30になっているはずです。これを例えば300(300秒)に変更します。

    max_execution_time = 300

    もし行が見つからない場合は、ファイルのどこかに追記しても構いませんが、通常は既存の行を修正します。

  4. ファイルを保存し、閉じます。
  5. Webサーバー(Apacheなど)を再起動します。
    この変更を反映させるためには、必ずWebサーバーの再起動が必要です。

この方法が最も根本的な解決策ですが、共有レンタルサーバーではphp.iniの編集が許可されていないことが多い点に注意してください。

3. WordPress: Max execution time exceeded が発生する主要な原因(複数)

単に実行時間を延長するだけでなく、根本的な原因を理解することは再発防止に役立ちます。主な原因は以下の通りです。

  • 重い処理を行うプラグインやテーマ:
    特に、大量のデータを処理するSEOプラグイン、画像最適化プラグイン、バックアッププラグイン、ECサイトの複雑な決済処理などが原因となることがあります。最適化されていないテーマも同様です。
  • 大容量のコンテンツのアップロード・インポート:
    高解像度の画像や動画ファイル、大規模なデータベースのインポート・エクスポートなどが原因で、処理が完了するまでに時間がかかりすぎることがあります。
  • PHPコードの非効率性:
    カスタムコードや自作のプラグイン・テーマに、無限ループや非常に時間のかかるデータベースクエリなど、効率の悪い処理が含まれている場合があります。
  • サーバーリソースの不足:
    共有ホスティングサービスなどで、他のユーザーのサイトとリソースを共有している場合、サーバーのCPUやメモリが不足し、PHPの処理が遅延することがあります。
  • 外部サービスとの連携の遅延:
    サイトが外部API(SNS、決済ゲートウェイ、CDNなど)と連携している場合、その外部サービスの応答が遅いと、PHPスクリプトの実行が中断されることがあります。
  • PHPのデフォルト設定値:
    多くのPHP環境では、max_execution_timeがデフォルトで30秒に設定されており、これが多くのWordPressサイトにとって不十分な場合があります。

4. WordPress/PHPで恒久的に再発を防ぐには

一時的な解決策だけでなく、将来的にこのエラーが再発しないようにするための対策も重要です。

  • max_execution_timeの設定値の最適化:
    必要以上に長くしすぎず、サイトの一般的な運用に必要な最小限の適切な値に設定しましょう。過度に長くすると、問題のあるスクリプトがサーバーリソースを長時間占有するリスクが高まります。
  • WordPressのパフォーマンス最適化:
    • 不要なプラグインの削除: 使用していない、または機能が重複しているプラグインは削除しましょう。
    • 軽量なテーマの使用: 複雑で重いテーマは、PHPの実行時間を長くする原因となることがあります。
    • 画像最適化: 画像はアップロード前に適切に圧縮・リサイズし、可能であれば遅延読み込み(Lazy Load)を導入しましょう。
    • キャッシュプラグインの導入: WP Super CacheやW3 Total Cacheなどのキャッシュプラグインは、PHPスクリプトの実行回数を減らし、サーバー負荷を軽減します。
    • データベースの最適化: 定期的にWordPressのデータベースを最適化し、不要なリビジョンやゴミデータをクリーンアップしましょう。
  • 信頼できるホスティングプロバイダーの選択:
    安定したPHP実行環境を提供し、十分なサーバーリソースがあるホスティングプロバイダーを選ぶか、必要に応じてより上位のプラン(VPSや専用サーバーなど)へのアップグレードを検討しましょう。
  • PHPスクリプトのデバッグと最適化:
    もしカスタムコードや自作のプラグイン・テーマを使用している場合は、それらのコードに非効率な処理がないか確認し、最適化を検討してください。開発ツールやプロファイラを使用すると効果的です。
  • エラーログの監視:
    PHPのエラーログ(通常はphp_error.logなど)を定期的に確認し、max_execution_time以外にも、サイトの動作に影響を与える潜在的な問題を早期に発見する習慣をつけましょう。

これらの対策を講じることで、「Max execution time exceeded」エラーの再発を防ぎ、WordPressサイトをより安定して運用できるようになります。もしご自身での解決が難しいと感じた場合は、専門のウェブ開発者やサーバー管理者に相談することをお勧めします。