VirtualBox + Vagrant + CentOS6 + PHP5.6 + XDebug + VSCodeでリモートデバッグする方法

常駐案件でXdebugのリモートデバッグを設定する必要がありそうだったので、自宅でできるかどうかやってみた。

【ローカルPC環境】

Windows10(64bit)

Visual Studio Code(2017/12/9時点最新版)インストール済

VSCodeプラグインPHP Debug」インストール済

(とりあえずXAMMPでPHPデバッグできるくらいにはしておこう。)

【手順】

VirtualBOXをインストール

Downloads – Oracle VM VirtualBox
Windows hostsリンクをクリックしてexeファイルをダウンロードする。
VirtualBox-5.2.2-119230-Win.exe」ファイルダブルクリックしてNext押しまくり。

vagrantのインストールはここらへん参考にした。

weblabo.oscasierra.net

ボックスの追加はここらへん参考にした。

weblabo.oscasierra.net

コマンドプロンプトで以下のコマンドを実行。(CentOS 6.7 64bitのボックスを追加するため)
vagrant box add CentOS_67_64 https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box

vagrantの起動方法
コマンドプロンプト
cd C:\Users\どこでもよい\virtualbox(ほんとにどこでもよいからフォルダを作る)
vagrant up

Tera TermでSSHアクセス
192.168.33.10(場合による)
root/vagrant

 

(以下Tera Termによるコマンド実行)

Apacheインストール
yum install -y httpd

Apache起動
service httpd start

ブラウザで「http://192.168.33.10/(IPは場合による)」にアクセスして確認。

自動起動設定
chkconfig httpd on

PHPのインストールは以下参照。

qiita.com

Pearのインストール
yum -y install php-pear

Xdebugのインストールは以下参照。

Xdebugのインストール | WEBサービス創造記

しかし「XML Extension not fount」のエラーが出る。。

以下にて解決

stackoverflow.com

serverfault.com

つまりは、

vi `which pecl`

して「-n」を削除して上書き保存する。

 

再度peclにてxdebugのインストールを試みる。
pecl install xdebug
以下のエラーが発生。
Download of "pecl/xdebug" succeeded, but it is not a valid package archive
Error: cannot download "pecl/xdebug"
Download failed
install failed

pearのバージョンが古いようなので、
pearのアップグレードを試みる。
pear upgrade pear

しかし失敗する。

以下手動にて対応。

pear upgrade Archive_Tar
cd /tmp/pear/download/
tar -zxvf Archive_Tar-1.4.3.tgz(ファイル名(バージョン)は適宜変更のこと)
mv /usr/share/pear/Archive/Tar.php /usr/share/pear/Archive/Tar.php.org
cp /tmp/pear/download/Archive_Tar-1.4.3/Archive/Tar.php /usr/share/pear/Archive/
(Archive_Tar-1.4.3はバージョンによって適宜変更のこと)

再度pearのアップグレードを試す。
pear upgrade pear
いけた。

そしてxdebugのインストールを試みる。
pecl install xdebug
いけた。

Build process completed successfully
Installing '/usr/lib64/php/modules/xdebug.so'
install ok: channel://pecl.php.net/xdebug-2.5.5
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の一番下に追記

(「zend_extension="・・・"」は上記でメモしたパスな)

[XDebug]

zend_extension="/usr/lib64/php/modules/xdebug.so"

html_errors=on
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_connect_back=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

上記追記後保存。その後、service httpd restartでApache再起動をお忘れなく。

参考

qiita.com

最新のVSCodeのバージョンだと、launch.jsonの設定方法が古かった・・
以下参照

marketplace.visualstudio.com

以下のような感じにしてあげてください。pathMappingsのとこな。

{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/var/www/html": "${workspaceRoot}"
}
},

 

以上!