phpMyAdminにて、アップデート時に固まる
今年に入ってから、ローカルでの開発環境の一つにて、Apache2.4&PHP7に移行しました。
兼ね良好な動作だったのですが、たまにApacheが落ちたり、phpMyAdminで固まることがありました。……が、開発が立て込んでいたので、その場しのぎで対処して問題を先送りしていました(汗)。
急ぎの開発が一段落し、問題に着手&解決できたので、その解決までを、備忘録を兼ねてメモしておきます。
事の発端:phpMyAdminにて、アップデートできない(固まる)
一番の大きな問題点としては、phpMyAdminにて、アップデートできない時があるということ。
具体的には、データを修正しようとすると、「読み込み中」表示のまま固まります。
その後は、うんともすんとも言いません。再読み込みすると、当然「読み込み中」は消えますが、アップデートは行われていない状態です。なんどやってもダメ。
ローカルのphpMyAdminで編集しエクスポート、本番環境にインポートする場合等も結構あるので、これでは困ってしまいます。
問題の切り分けをする
まずは、こういった時の定石として、何に問題があるのかを切り分けることが大切です。
問題点は、PHP(7)、Apache、phpMyAdminのどれなのか。
わかりやすい点として、Apacheのエラーログを見てみました。
エラーログの場所は、私の環境では以下にあります。
C:\Apache24\logs
「読み込み中」になった後に、以下のエラーログが追加されていました。
[Thu Sep 01 12:57:15.716631 2016] [mpm_winnt:notice] [pid 14312:tid 548] AH00428: Parent: child process 15012 exited with status 255 -- Restarting. [Thu Sep 01 12:57:16.120654 2016] [mpm_winnt:notice] [pid 14312:tid 548] AH00455: Apache/2.4.18 (Win64) OpenSSL/1.0.2e PHP/7.0.3RC1 configured -- resuming normal operations [Thu Sep 01 12:57:16.120654 2016] [mpm_winnt:notice] [pid 14312:tid 548] AH00456: Apache Lounge VC14 Server built: Dec 9 2015 11:13:29 [Thu Sep 01 12:57:16.120654 2016] [core:notice] [pid 14312:tid 548] AH00094: Command line: 'C:\\Apache24\\bin\\httpd.exe -d C:/Apache24' [Thu Sep 01 12:57:16.121654 2016] [mpm_winnt:notice] [pid 14312:tid 548] AH00418: Parent: Created child process 1480 [Thu Sep 01 12:57:16.693687 2016] [mpm_winnt:notice] [pid 1480:tid 488] AH00354: Child: Starting 64 worker threads.
1行目を見ると、なんとApacheが再起動しているように読めます。
そこで、Windowsのイベントビューアーのログを見てみました。
晒していいのか分かりませんが(笑)、こんな感じで、アプリケーションでのエラーが発生しています。
ここで、障害が発生しているのがPHPで利用しているXdebugモジュールだと分かりました。
Xdebugは動いてはいましたが、PHPのバージョンと完璧には合わなかったのかもしれません。
Xdebugをアップグレードする
となると、Xdebugから新しいモジュールを落とせば解決しそうです。
しかし、Xdebugのオフィシャルサイトを久々に見てみましたが、どれを入れて良いのか分かりません。
TS付き、TS無しのものがあるけど、TSの意味って何だろなと。
そんな時に便利なのが、phpinfo()の出力をコピペすれば、最適なモジュールを教えてくれるサービス。
https://xdebug.org/wizard.php
これによると、私の場合は、「PHP 7.0 VC14 TS (64 bit) 」をダウンロードすれば良かったようです。
そして、php.iniから、
zend_extension=”C:\php70\ext\php_xdebug-2.4.1-7.0-vc14-x86_64.dll”
として、phpMyAdminから再チャレンジすると……無事解決しました!
結構不便だったので、これでやっと快適になりそうです。