CakePHP2.xをNetBeansでデバッグする方法(CentOS7)

tmb_cakephp02

CakePHP2.xの開発環境でNetBeansを使い、ブレークポイントを設定してステップ実行できるようにする方法です。例に漏れず、ブレークポイントで止まらなくて悩みました。

スポンサーリンク

実行環境

  • CentOS7.1.1503
  • Apache2.4.6
  • NetBeans8.0.2
  • xdebug2.3.2
  • PHP5.4.16
  • CakePHP2.6.7

事前準備

  • xdebugインストール
  • xdebug.ini修正

これだけです。たぶんですが。xdebug.iniの修正方法でハマりました。

xdebugインストール

すいません。肝心な部分ですがだいぶ前にやったため、方法を忘れました。ググってみたんですが、どれかわかりませんでした。コマンドで入れたと思います。。。

xdebug.ini修正

私の環境では、/etc/php.dにありました。最終的に以下のようになります。

zend_extension=/usr/lib64/php/modules/xdebug.so
;extension=xdebug.so
xdebug.collect_params = On
xdebug.dump.GET = *
xdebug.POST = *
xdebug.default_enable = 1
xdebug.remote_enable  = on
xdebug.remote_host    = 127.0.0.1
xdebug.remote_port    = 9000
xdebug.remote_handler = dbgp
xdebug.remote_autostart = 0
xdebug.remote_connect_back=1
;xdebug.idekey = netbeans-xdebug
xdebug.idekey = 

一番重要なのが、1行目のzend_extension=です。xdebug.soがある位置を指定しています。私がインストールしたときには2行目の状態でした。(今はコメントアウトしています)ブレークポイントで止まらないのであれこれ調べていたときにこちらのページ→【PHP】NetBeans+Xdebugを利用してリモートデバッグにこう書いていました。

「xdebug」は拡張モジュールは拡張モジュールでも【Zend拡張モジュール】という事です。つまり、PHP.iniにextension=xdebug.soではなくzend_extension=xdebug.soさらにzend_extensionの場合はextension_dirの指定が有効でない為、フルパスで記述する必要があります。

つまり、私の環境のデフォルトではダメだったということです。CakePHPとNetBeansのデバッグ方法でいくら検索してもこの情報は出てきませんでした。基本的にはこの一行でうまくいくようになりました。上記設定の下の方にある、xdebug.idekey = の部分も設定が必要なのかとxdebug.idekey = netbeans-xdebugにしましたが、最終的にはやらなくてもデバッグできるようなので、今はコメントアウトしています。

xdebug.soがある場所もインストール方法等によると思うのですが、私は/usr/lib64/php/modules/xdebug.soというパスでした。もしかしたらこちらの方法→CentOS6.xのphpにxdebugインストールするでインストールしたのかもしれません。

補足

CakePHPとNetBeansのデバッグでブレークポイントに止まらない件で検索するとよくヒットするのが、こちらのサイト→CakePHP2をNetBeansでデバッグのような、プロジェクトの開始ページをCakePHPに明示的に合わせるというものです。私も一応この設定にしてみましたが、開始ページをroute.phpで変更しているため多分当てはまらないと思います。(開発中のページがwebroot/index.phpから始まっていない)

まとめ

ずいぶん悩みましたが、現在はブレークポイントを設定し、プロジェクトのデバッグ開始でデバッグとステップ実行ができるようになりました。zend_extensionというものがそもそも何なのかというところをまた勉強したいと思います。

スポンサーリンク

この記事が気に入っていただけたらシェアお願いします。励みになります。
prev CakePHP2.xで確認画面付き問い合わせフォーム作成 next WordPressの新着記事をJSON形式で取得し外部サイトで表示する方法

スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です