PHP環境

UbuntuのPHP+NginxでリモートなXdebug (4) リモートデバッグ

0

サーバ上のPHPコードにアクセスできるようになったので、ローカルのEclipseでPHPプロジェクトを作ります。

「Install New Software」で「Luna – http://download.eclipse.org/releases/luna」を選択し、「General Purpose Tools」の「Dynamic Language Toolkit – Remote Development Support」をインストールします。

ubuntu-php-nginx-xdebug-10

インストール後、Eclipseが再起動したらサーバのディレクトリにEclipseのPHPプロジェクトを作ります。
Remote System Explorerのパースペクティブを開き、Remote SystemsビューのSftp Filesからプロジェクトに設定するディレクトリを右クリック。Create Remote Projectを選択します。

ここでは/usr/share/nginx/htmlを選択しました。
PHPパースペクティブを開くと、新しいプロジェクトが出来ています。
ubuntu-php-nginx-xdebug-13

最後にEclipseのXdebug設定です。
「Run→Debug Configurations」で設定ダイアログを開き、PHP Web Applicationを選択してNew launch configurationのアイコンをクリックします。

ServerパネルのConfigureボタンをクリックしてサーバ設定ダイアログを開き、DebuggerにXDebug、Base URLにサーバのURLを設定します。
ubuntu-php-nginx-xdebug-14

ServerタブのFileに、実行するPHPファイルのワークスペース内のパス(この場合は/192.168.2.18_html/phpinfo.php)を設定、URLのAuto Generateのチェックを外してURLのファイルパスにサーバのドキュメントルートからの相対パスを設定します。
ubuntu-php-nginx-xdebug-16

DebuggerタブのServer DebuggerでXDebugを選択、Debug Through SSH Tunnelにチェックを入れてUserとPasswordを設定します。
ubuntu-php-nginx-xdebug-15

以上で設定は完了です。
Apply、Debugの順にクリックしてデバッグを開始します。
デフォルトではコードの最初の行で自動的にブレークします。

ubuntu-php-nginx-xdebug-17

UbuntuのPHP+NginxでリモートなXdebug (3) Eclipse+RSEでサーバにアクセス

0

前の記事まででサーバ側の準備ができました。
あとはサーバにXdebugで接続すればリモートデバッグできるのですが、サーバとローカルのコードを同期させなくてはならなかったりして微妙に面倒です。「ここまで出来るんなら、もう少し何とかしてくれていいのではないか?」という不満が残りますね。

そこで、EclipseとRSE(Remote System Explorer)プラグインを使って、サーバ上のPHPコードにローカルのEclipseからアクセスできるようにしましょう。
ここでは、Eclipse4.4(Lunar)PDTにRSE3.5プラグインを追加する例を示します。

Eclipseはとにかくインストール済みとします。
あらかじめサーバのドキュメントルートのパーミッションを適宜設定しておいてください(chown -Rでwww-data:www-dataにして、ユーザの初期グループをwww-dataにしておくとか)。

RSEはEclipseのTarget Managementリポジトリにあります。
「Help→Install New Software」を開き、「Add」で「Add Repository」ダイアログを開きます。
Locationに「http://download.eclipse.org/tm/updates/3.5」と入力します。Nameは適当で構いません。

ubuntu-php-nginx-xdebug-03

OKしてしばらく待つと、パッケージのリストが表示されます。
「Remote SystemExplorer End-User Runtime」を選択してインストールを実行します。

ubuntu-php-nginx-xdebug-04

インストール完了後、Eclipseを再起動すると、パースペクティブに「Remote System Explorer」が追加されています。
ubuntu-php-nginx-xdebug-06

パースペクティブを開き、左側の「Remote Systems」ビューで右クリック。「New→Connection」で新しい接続を追加します。
ここではSSHで接続することにします。
ubuntu-php-nginx-xdebug-05

続くダイアログでホスト名を入力してFinishすると、Remote Systemsビューにホスト名が追加されます。
ubuntu-php-nginx-xdebug-07

ubuntu-php-nginx-xdebug-08

これでローカルのEclipseからサーバ上のファイルを編集したり、SSHログインできるようになりました。

UbuntuのPHP+NginxでリモートなXdebug (2) Xdebugインストール

0

まずはPECLを使うためにphp5-devをインストールします。
binutilやら何やらも必要になるので、-yオプションを付けて一気に済ませてしまいましょう。

$ sudo apt-get install -y php5-dev

次に、PECLでXdebugをインストール。

$ sudo pecl install xdebug

aptでphp5-xdebugを入れても良いのですが、私はより新しいバージョンを使うためにPECLからのインストールを選択しました。aptで入れればbinutilなどのリソースを省けるので、どちらを選ぶかはお好みで。

2016/01/08 追記 ubuntu14.04では、-Zオプションが必要です。

$ sudo pecl install -Z xdebug

Xdebugをインストールしたら/etc/php5/mods-available/xdebug.iniを作成します。

xdebug.remote_connect_back=OnはすべてのホストからサーバのXdebugに接続できるようにします。
リモートデバッグするホストを特定の1台に限る場合は、代わりにxdebug.remote_host="nnn.nnn.nnn.nnn"と記述しておくと安全です。

FPM経由でXdebugを有効にするため、/etc/php5/fpm/conf.d/20-xdebug.iniからリンクを張ります。

$ sudo ln -s /etc/php5/mods-available/xdebug.ini /etc/php5/fpm/conf.d/20-xdebug.ini

設定は以上です。FPMを再起動します。

$ sudo service php5-fpm restart

ブラウザでphpinfo.phpを開き、Xdebugが有効になっていれば設定は完了です。

ubuntu-php-nginx-xdebug-02

UbuntuのPHP+NginxでリモートなXdebug (1) Nginx PHP対応

0

ローカルPCのEclipseからサーバ上のPHPをリモートデバッグします。
PHP環境はすべてサーバ側に置き、ローカルはEclipseとプラグインだけにして軽量化、PHPコードもサーバ上だけに一元化します。

UbuntuのバージョンはServer14.04。PHP5とNginxはaptでインストール済みとします。サーバーのIPアドレスはstaticです。

まずはFPM(FastCGI Process Manager)をインストールします。

$ sudo apt-get install -y php5-fpm

NginxをPHPに対応させるため、/etc/nginx/sites-available/defaultを編集します。
変更は3ヶ所。インデックスファイル名追加とサーバー名設定、それからコメントアウトされているPHPの設定を有効に。

server_nameにはサーバーのホスト名かIPアドレスを設定します。ここではひとまずIPアドレスで良いでしょう。この例では192.168.2.18です。

コメント中に「php.iniに”cgi.fix_pathinfo = 0;”と書け」とあるのでそのようにします。

設定確認のためのphpinfo.phpをNginxのドキュメントルート/usr/share/nginx/htmlに置きます。

設定が済んだらNginxとFPMを再起動します。
$ sudo service php5-fpm restart
$ sudo service nginx restart

ブラウザでhttp://hostname/phpinfo.phpを開き、下のような画面が表示されれば設定は完了です。

ubuntu-php-nginx-xdebug-01

ページのトップへ