Windowsを使用するのはグラフィカルで便利な開発環境があるためです。
そしてサーバーとしてのLinuxは秀逸です。
PHPもフリーで簡易ですし、Apache・MySQL・Linuxとの相性も最高です。
しかし多くの場合var_dumpやログでデバッグするハメになり苦労します。
リモートデバッグを行うと、Windows上でLinuxの実環境や開発環境での実行ができるようになります。
この環境を整えるのに恐ろしく苦労したのでここにその記録を残します・・・ :x001:
しかし一旦この環境を整えると、ステップ実行や変数の確認が容易になり、
昨今の複雑なフレームワークを理解する上でも大変役に立つこと間違いなしです! :x002:
そもそもPHPをデバッグして、ステップ実行するにはそのままでは無理です。
まずはLinuxサーバー側にxdebugをインストールします。
ZendDebuggerというのもありますが、これは現在アップデートされていないようなので、
xdebugをしようします。
xdebugをインストールする
行ったのはCentOSです。
まずはPECL(PEAR Extended Code Language)というPEARライブラリの拡張版が必要です。
そのためpearも必要になります。
//php-develのインストール [root@centos ~]# yum install php-devel //php-pearのインストール [root@centos ~]# yum install php-pear //xdebugのインストール [root@centos ~]# pecl install xdebug downloading xdebug-2.2.3.tgz ... Starting to download xdebug-2.2.3.tgz (250,543 bytes) .....................................................done: 250,543 bytes Validation Error: Invalid tag order in , found expected one of "providesextension, srcpackage, srcuri, phprelease, extsrcrelease, extbinrelease, bundle" Parsing of package.xml from file "/tmp/tmpIyfBfm/package.xml" failed Download of "pecl/xdebug" succeeded, but it is not a valid package archive Error: cannot download "pecl/xdebug"
最後でエラーとなりました。
このエラーはpearのバージョンが古いことが問題のようです。
[root@centos ~]# pear list Installed packages, channel pear.php.net: ========================================= Package Version State Archive_Tar 1.3.1 stable Console_Getopt 1.2 stable PEAR 1.4.9 stable XML_RPC 1.5.0 stable
そのためpearをアップグレードします。
結論からいいますとそのままではアップグレードできません。
下記エラーが発生してしまいます。
[root@centos ~]# pear upgrade pear WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update pear/PEAR dependency package "pear/Console_Getopt" downloaded version 1.3.1 is not the recommended version 1.2.3, but may be compatible, use --force to install pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9 pear/Console_Getopt requires PEAR Installer (version >= 1.8.0), installed version is 1.4.9 downloading XML_Util-1.2.1.tgz ... Starting to download XML_Util-1.2.1.tgz (17,729 bytes) ......done: 17,729 bytes upgrade ok: channel://pear.php.net/XML_Util-1.2.1
要するにpearをアップグレードする前に、にArchive_TarとConsole_Getoptをアップグレードする必要があります。
–forceを使用することがポイントです。
まずはArchive_Tarのアップグレードをします。
[root@centos ~]# pear upgrade --force Archive_Tar WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update warning: pear/pear dependency package "pear/Archive_Tar" installed version 1.3.11 is not the recommended version 1.3.1 warning: pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9 downloading Archive_Tar-1.3.11.tgz ... Starting to download Archive_Tar-1.3.11.tgz (18,537 bytes) ......done: 18,537 bytes upgrade ok: channel://pear.php.net/Archive_Tar-1.3.11
次にConsole_Getoptのアップグレードをします。
[root@centos ~]# pear upgrade --force Console_Getopt WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update warning: pear/Console_Getopt requires PEAR Installer (version >= 1.8.0), installed version is 1.4.9 downloading Console_Getopt-1.3.1.tgz ... Starting to download Console_Getopt-1.3.1.tgz (4,471 bytes) .....done: 4,471 bytes upgrade ok: channel://pear.php.net/Console_Getopt-1.3.1
最後にPEARのアップグレードをします。
[root@centos ~]# pear upgrade PEAR WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update downloading PEAR-1.9.4.tgz ... Starting to download PEAR-1.9.4.tgz (296,332 bytes) .........................done: 296,332 bytes upgrade ok: channel://pear.php.net/PEAR-1.9.4 PEAR: Optional feature webinstaller available (PEAR's web-based installer) PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer) PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer) To install use "pear install pear/PEAR#featurename"
pearが見事アップグレードできていることが確認できます。
[root@centos ~]# pear list Installed packages, channel pear.php.net: ========================================= Package Version State Archive_Tar 1.3.11 stable Console_Getopt 1.3.1 stable PEAR 1.9.4 stable Structures_Graph 1.0.4 stable XML_RPC 1.5.0 stable XML_Util 1.2.1 stable
これでやっと本題のxdebugがインストールできるようになります。
xdebugはインストールすると自動的にコンパイルしてくるようです。
そのため少し時間がかかるかもしれません。待ちましょう。
[root@centos ~]# pecl install xdebug ・・・・・・ running: find "/tmp/pear/temp/pear-build-rootYTEpJb/install-xdebug-2.2.3" | xargs ls -dils 11894837 4 drwxr-xr-x 3 root root 4096 7月 8 15:05 /tmp/pear/temp/pear-build-rootYTEpJb/install-xdebug-2.2.3 11894841 4 drwxr-xr-x 3 root root 4096 7月 8 15:05 /tmp/pear/temp/pear-build-rootYTEpJb/install-xdebug-2.2.3/usr 11894842 4 drwxr-xr-x 3 root root 4096 7月 8 15:05 /tmp/pear/temp/pear-build-rootYTEpJb/install-xdebug-2.2.3/usr/lib 11894843 4 drwxr-xr-x 3 root root 4096 7月 8 15:05 /tmp/pear/temp/pear-build-rootYTEpJb/install-xdebug-2.2.3/usr/lib/php 11894844 4 drwxr-xr-x 2 root root 4096 7月 8 15:05 /tmp/pear/temp/pear-build-rootYTEpJb/install-xdebug-2.2.3/usr/lib/php/modules 5832705 588 -rwxr-xr-x 1 root root 596851 7月 8 15:05 /tmp/pear/temp/pear-build-rootYTEpJb/install-xdebug-2.2.3/usr/lib/php/modules/xdebug.so Build process completed successfully Installing '/usr/lib/php/modules/xdebug.so' Release Warnings ================ p install ok: channel://pecl.php.net/xdebug-2.2.3 configuration option "php_ini" is not set to php.ini location You should add "zend_extension=xdebug.so" to php.ini
最後にphp.iniに追加しろとでているのでphp.iniに追加します。
[root@centos etc]# vim php.ini //追加 [zend] zend_extension="/usr/lib/php/modules/xdebug.so" xdebug.remote_enable=On xdebug.remote_host=192.168.0.0/24 xdebug.remote_connect_back=On
細かい設定が他にもありますが、
リモートデバッグをするだけならこれで問題ないでしょう。もちろんremote_hostはご自分の環境に合わせてください。
最後にphp.iniを編集した後にはApacheの再起動を忘れずにお願いします。
[root@centos etc]# apachectl graceful
xdebugが有効になっていることを確認できたらLinux側の設定は完了です。
[root@centos etc]# php -i | grep xdebug xdebug xdebug support => enabled ・・・・
実はxdeugをインストールすると、elipseでなくともlinuxにdebuggerというプラグインを追加することで、
vimでもステップ実行や変数の確認といったデバッグができるようになります。
これは別の機会に。
次回はWinodwsのeclipse側の設定です。