WindowsのeclipseからLinuxのPHPをリモートデバッグする(1)Linuxにxdebuをインストールする

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側の設定です。

タイトルとURLをコピーしました