サイトアイコン IT NEWS

PHPの「max_execution_time」の設定を変更する3つの方法

PHPmax_execution_timeは、スクリプトがパーサにより強制終了されるまでに許容される最大の時間を秒単位で指定する設定です。
この設定は、無限ループするようないい加減に書かれたスクリプトから、サーバーの負荷を上げることを防止するのに役立ちます。
今回は、php.iniを直接書き換えることなくmax_execution_timeの設定を変更する方法を3つご紹介します!

max_execution_timeを変更する理由

基本的に、max_execution_timeの値はデフォルトで事足りると思いますが、例えば、動画編集や大量のデータベース操作など、スクリプトが長時間の処理を行う必要がある場合や、APIやファイル読み込みなど、スクリプトが外部ソースからデータを取得する際にタイムアウトエラーが発生する場合など、重たい処理をする場合にmax_execution_timeの値を変更することがあります。

また、スクリプトがブラウザから実行する際に、処理完了まで待たずにバックグラウンドで実行したい場合なども変更することがあります。

max_execution_timeの変更例

著者の場合、自宅サーバーに構築したNextCloudで、大きなサイズのファイルを大量にやり取りすることを想定して、max_execution_timeの設定を変更しました!

ただ、冒頭でも書いたように、サーバーを負荷から守る意味でも、本当に変更が必要かどうかをよく考えてから設定を変更することが重要です。

max_execution_timeを変更する3つの方法

結論から言うと、php.iniを書き換えずにmax_execution_time変更する方法は以下の3つです。

  1. 実行するPHPファイル内でini_set関数を使う方法
  2. サーバー設定ファイル.htaccess内でphp_valueディレクティブを使う方法
  3. レンタルサーバーの設定画面からPHPphp.ini)の設定を行う方法

それぞれ適用範囲や影響力が異なりますので、目的に応じて選択してください。

PHPファイル内でini_set関数を使う

max_execution_timeのデフォルト値は30秒です。
例えば、実行するPHPファイルに次のように記述すれば、max_execution_timeを60秒に変更できます。

<?php
ini_set('max_execution_time', 60);
?>

また、無制限にする場合は0を指定します。
ただし、無制限にした場合はブラウザから処理を中断しないように注意してください。

.htaccess内でphp_valueを使う

.htaccessで設定する方法は、サーバー設定ファイル「.htaccess」に次のように記述することです。

php_value max_execution_time ここに秒数

例えば、max_execution_timeを600秒(10分)に変更する場合は、次のように記述します。

php_value max_execution_time 600

この場合、この設定ファイルがあるディレクトリ以下すべてPHP実行時間が600秒に変更されます。

レンタルサーバーの管理画面から変更する

レンタルサーバーでPHPのmax_execution_timeの設定を変更する方法は、利用しているレンタルサーバーによって設定方法が異なります。
今回は例として、よく利用されている人気のエックスサーバーコノハについてご紹介します。

Xserver(エックスサーバー)の場合

出典:wordpressで画像をアップロードできないHTTPエラーの解決方法 | フォトロマ

エックスサーバーでは、php.ini設定でmax_execution_timeの値を変更することができます。
その手順は以下の通りです。

  1. エックスサーバーのサーバーパネルにログインします。
  2. PHP欄にある【php.ini設定】をクリックします。
  3. エラーが発生しているドメインの【選択】をクリックします。
  4. 【php.ini設定変更】をクリックします。
  5. 画面を下にスクロールさせると、【その他の設定】欄に【max_execution_time】があります。
    その値を60秒以上に変更します。
  6. 【設定する(確認)】をクリックし、【設定する(確定)】をクリックします。

Conoha Wing(コノハ)の場合

出典:PHPの設定をする|ConoHa WINGサポート

Conoha Wingでは、コントロールパネル上でphp.iniを編集することができます。
その手順は以下の通りです。

  1. コントロールパネルへログインします。
  2. 上部メニューの「WING」をクリックします。
  3. 左メニューの「サイト管理」をクリックします。
  4. サイト管理画面の左メニューで「サイト設定」を開きます。
  5. 上のタブから「応用設定」を開きます。
  6. 「PHP設定」を開きます。
  7. 「php.ini編集」の右側の鉛筆アイコンの「編集」をクリックします。
  8. 入力欄に次のように記述します。
    max_execution_time = ここに秒数
    例えば、max_execution_timeを120秒に変更する場合は、次のように記述します。
    max_execution_time = 120
  9. 「保存」をクリックします。

まとめ

どこで変えても同じ結果なのですが、PHPファイルini_set関数で設定する方法は、記載したスクリプトファイルのみに適用されます。
レンタルサーバーをご利用なら管理画面から変更、でなければphp.ini.htaccessで変更、都度適用したいなら直接PHPファイルで変更って感じでしょうか。

ただ、全部に設定しても、どの設定を採用するか優先順位がありますので、変更する際は注意しが必要です。

設定の優先順位について

設定の優先順位は次のようになります。

優先順位
PHPファイル

そのファイルのみに適用される

.htaccess

そのディレクトリ以下に適用される

php.ini

PHP全体に適用される

つまり、PHPファイル > .htaccess > php.ini の順に優先されます。
ただし、セーフモードで動いている場合は、これらの設定は無効になります。

以上です。お疲れ様でした!

著:大重 美幸
¥3,344 (2023/03/07 14:59時点 | Amazon調べ)


モバイルバージョンを終了