XAMPP の phpMyAdmin で「Maximum execution time of 300 seconds」が出るときの直し方:config.inc.php と php.ini(phpMyAdmin 5.2 で確かめた)

広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

XAMPP の phpMyAdmin で大きな SQL や CSV を取り込むと出る「Fatal error: Maximum execution time of 300 seconds」の直し方。直すのは config.inc.php の ExecTimeLimit だけで、config.default.php は直さないこと、php.ini で本当に効く値を、phpMyAdmin 5.2.1 のコードと作業環境で確かめました。

XAMPP の phpMyAdmin の設定のファイル
C:\xampp\phpMyAdmin\config.inc.php

phpMyAdmin は、取り込み(インポート)や書き出しにかけてよい時間を、設定の ExecTimeLimit で決めています。決めていないときの既定は 300 秒で、これを超えると「Maximum execution time of 300 seconds」のエラーで止まります。

このサイトの作業環境(XAMPP・phpMyAdmin 5.2.1)では、上のファイルに 1 行足すだけで直りました。

phpMyAdmin の libraries/config.default.php の先頭には「DO NOT EDIT THIS FILE, EDIT config.inc.php INSTEAD」(直さずに config.inc.php を直して)と書いてあります。phpMyAdmin を入れ直すと上書きされるので、直すのは config.inc.php だけにします

phpMyAdmin 5.2 では、既定の値はコード(libraries/classes/Config/Settings.php)で決まっていて、ExecTimeLimit がないときやマイナスのときは 300 秒になります。config.inc.php に書いた値が、それより優先されます。

config.inc.php(いちばん下に足す)
// 取り込み・書き出しの制限時間(秒)。0 にすると制限なし
$cfg['ExecTimeLimit'] = 3600;
書き方 意味
$cfg[‘ExecTimeLimit’] = 3600; 1 時間まで待つ
$cfg[‘ExecTimeLimit’] = 0; 制限なし(作業環境だけで使う)
$cfg[‘Servers’][$i][‘ExecTimeLimit’] サーバーごとの設定ではないので、ここに書いても効かない

config.inc.php は PHP のファイルなので、保存すれば次に phpMyAdmin を開いたときから効きます。

php.ini で見ておく値

phpMyAdmin は、取り込みを始めるときに、PHP の制限時間を ExecTimeLimit の秒数で上書きします(コードの Util.php で set_time_limit() を呼んでいる)。そのため、php.ini の max_execution_time を合わせなくても、取り込みは止まりません。

php.ini で効いてくるのは、上げるファイルの大きさとメモリです。

C:\xampp\php\php.ini
upload_max_filesize = 256M
post_max_size = 256M
memory_limit = 512M
設定 役目
upload_max_filesize 上げられるファイル 1 つの大きさの上限
post_max_size 送る中身ぜんぶの大きさの上限。upload_max_filesize 以上にする
memory_limit PHP が使ってよいメモリ

このサイトの作業環境の php.ini を見ると、upload_max_filesize は 200M でしたが、post_max_size が 100M でした。この場合、実際に上げられるのは 100M までです。2 つを同じ大きさにそろえておくと迷いません。

設定を変えたら Apache を再起動

php.ini を直したあとは、XAMPP のコントロールパネルで Apache を止めて(Stop)、もう一度動かす(Start)と反映されます。config.inc.php だけを直したときは、再起動は要りません。

phpMyAdmin から CSV を取り込んでテーブルを作る

XAMPP の phpMyAdmin で「Maximum execution time of 300 seconds」が出るときの直し方:config.inc.php と php.ini(phpMyAdmin 5.2 で確かめた)

上の設定のあと、作りたいテーブルの名前を入れて実行すると、CSV の中身をそのままテーブルに取り込めます。SQL の形でないデータを入れたいときに便利です。

とても大きな SQL はコマンドで取り込む

数百 MB を超えるような SQL は、phpMyAdmin を通さず、XAMPP に入っている mysql のコマンドで取り込むほうが速く、時間やファイルの大きさの制限も受けません。

コマンドプロンプトで実行
C:\xampp\mysql\bin\mysql.exe -u root -p データベース名 < C:\作業\dump.sql

関連機能

  1. iframe埋め込みを禁止してクリックジャッキング攻撃を防ぐ

  2. サイトマップエラー error on line 2 at column 6: XML declaration allowed only at the start of the document の修正…

  3. WordPress W3C(ワールドワイドウェブコンソーシアム)Web標準仕様のチェック方法

サイドバー

よく使うカスタマイズ

最近の記事

Profile

PAGE TOP