PHPで「Fatal error: Maximum execution time of xx seconds exceeded」というエラーになったときの対処

PHPで「Fatal error: Maximum execution time of xx seconds exceeded」というエラーになったときの対処

Posted at May 15,2015 12:55 AM
Tag:[PHP]

PHPで「Fatal error: Maximum execution time of 30 seconds exceeded」というエラーになったときの対処について紹介します。

1.問題点

PHPを実行したときに、次のようなメッセージが出力されました。

Fatal error: Maximum execution time of 30 seconds exceeded in index.php on line xxx

このメッセージを抑止したいのですが解決方法が分かりません。

2.原因

このメッセージは、PHPの実行でタイムアウトが発生したことによるものです。

ということで以下、対処方法(120秒に変更する例)を紹介します。

3.対処1:php.iniを修正する

そもそもタイムアウト時間は、php.iniの「max_execution_time」にデフォルト値が設定されています。

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;
 
max_execution_time = 60     ; Maximum execution time of each script, in seconds

したがって、php.iniのmax_execution_timeの値を修正すれば回避することができます。

max_execution_time = 120;

4.対処2:.htaccessまたはhttpd.confを修正する

.htaccessまたはhttpd.confに次の1行を記述すれば、max_execution_timeを変更することができます。

php_value max_execution_time 120

.htaccessの場合はApacheの再起動が必要です。

5.対処3:ini_set()で修正する

ini_set()でもmax_execution_timeを変更することができます。

<?php
ini_set("max_execution_time", 120);
?>

ただしPHPをセーフモードで実行している場合、ini_set()では変更できないようです。

参考:実行時設定

6.対処4:set_time_limit()で修正する

set_time_limit()を該当のPHPファイルの先頭に記述することで、局所的にタイムアウト時間を変更することができます。

<?php
set_time_limit(120);
?>

7.対処5:.user.iniで変更する

PHP5.3以降であれば.user.iniで変更することができます。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)