こんにちはカトーです。
弊社ではWEBアプリーション開発環境はESXiの開発環境やクラウドでサーバ作って開発を行うことが多いのですが、ちょっとした検証だとやはりローカル環境で行いたいものです。そして簡単なスクリプトはプロジェクト作らずにブラウザ上やらローカルのサーバ上で行いたいということもあります。
そんな中、先日メインマシンもノートパソコンもWindows10に乗り換えて定番のXAMPPを入れたらXDebugが入ってないので入れてみましたので、その記録です。
先に書いておくと、3ステップ完了です。
- 必要なバージョンのXdebugをダウンロードする。
- ダウンロードした dll を\xampp\php\extに置く。
- php.ini にxdebug 情報を書いて再起動。
あまりにも簡単なので、検証しながら書いていきますよ。読むのが面倒、サクッと入れる方は下にxdebugインストール項目あるので、そこからどうぞ。
PHPのデバックって
PHP言語は簡単に書けるがゆえに、お客様のスクリプトをサーバに格納して目につくのは負荷を増やすNotice:エラーや不要なループ、PHP7での非推奨記述など。いずれもWEBプログラマーさんがデバックすればいいのですが、結構な頻度でサーバを移したら動かないから修正するというのがあります。その上で、最低限実行時間とメモリ使用や、どの部分がエラーなのか分からないと困ります。
今回はそんな状況でXAMPPでデバック。まぁ、何かプロファイラやIDE使っていれば不要ですが……。
XAMPPのインストール
XAMPPはローカル環境でさくっとPHP+MySQL環境構築できるツールです。難しいことなく5分もあればインストール完了です。
phpinfo();の確認
一応確認でphpinfo();関数で見てみると最新のXAMPPにはPHPは7.1.9でXdebugが入っていません。
テストで、エラーが出るコード書いてみます。
1 2 3 4 5 6 7 |
<?php echo $test; if($hoge == 1){ echo $test; } ?> |
何も定義していないと状態で、$testという変数と、if文中で$hogeを使おうすれば、
1 2 |
Notice: Undefined variable: test in D:\xampp\htdocs\test\notice.php on line 3 Notice: Undefined variable: hoge in D:\xampp\htdocs\test\notice.php on line 5 |
上記エラーが出ます。これだとメモリーも実行時間もわかりません。何かプロファイラを使えばいいのですが、
しかしこれは最近のPHPのバージョンで、またサーバによってはこのエラーを消していたりします。XAMPPに内容しているphp.iniでは106行目付近
1 2 3 4 |
; error_reporting <strong>; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED</strong> ; Development Value: E_ALL ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT |
XAMPPではデフォルトでエラーを表示されるようになっています。
XDebugインストール
- 必要なバージョンのXdebugをダウンロードする。
- ダウンロードした dll を\xampp\php\extに置く。
- php.ini にxdebug 情報を書く。XAMPP再起動
参照 https://gist.github.com/odan/1abe76d373a9cbb15bed
落としてくるバージョンですが、おすすめなのは、以下のサイトでphpinfoの情報を張り付けてくれればそのまま必要なバージョンを教えてくれます。すごく簡単です。
貼り付けると以下、表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Tailored Installation Instructions <span style="font-size: 120%;"><strong>Summary</strong></span> Xdebug installed: no Server API: Apache 2.0 Handler Windows: yes - Compiler: MS VC14 - Architecture: x86 Zend Server: no PHP Version: 7.1.9 Zend API nr: 320160303 PHP API nr: 20160303 Debug Build: no Thread Safe Build: yes Configuration File Path: C:\WINDOWS Configuration File: D:\xampp\php\php.ini Extensions directory: D:\xampp\php\ext <span style="font-size: 120%;"><strong>Instructions</strong></span> 1.Download <a href="http://xdebug.org/files/php_xdebug-2.5.4-7.1-vc14.dll" target="_blank" rel="noopener">php_xdebug-2.5.4-7.1-vc14.dll</a> 2.Move the downloaded file to D:\xampp\php\ext 3.Edit D:\xampp\php\php.ini and add the line zend_extension = D:\xampp\php\ext\php_xdebug-2.5.4-7.1-vc14.dll 4.Restart the webserver If you like Xdebug, and thinks it saves you time and money, please have a look at the donation page. |
ありがたいことに、
Download php_xdebug-2.5.4-7.1-vc14.dll と出てますので、これをダウンロードして記述通りに、\xampp\php\extに配置します。ちなみにD:\となってますが、私はDドライブに入れてるので、これはCなり自分の環境が表示されますので、合わせてください。そして、php.iniの最後に「zend_extension = D:\xampp\php\ext\php_xdebug-2.5.4-7.1-vc14.dll」と一行記述。
xdebug確認
しっかり表示されました。
phpinfoも確認してみます。
しっかり表示されました。
最後に
昨今のWordPressでサイトを作り、プラグインでいろいろ作りこむというのが結構多い現状、バージョンに合わないやらテンプレートの部分をいじったら動かない!というのも見かけます。サーバを管理する側としてはPHPのプロセスが交通渋滞のように処理しきれずにロードアベレージがどんどん上がっていくのは冷や汗ものです。テーマやテンプレートを確認してひとつひとつプラグインを見ていくというのは本当に手間のかかることです。ぜひデバックツールやプロファイラを使って開発をしましょう。