Vagrant上でXdebug使いたくてPeclコマンドでインストールしたけどうまくいかなかった話
どうもババールです。
僕は、vagrantとvirtualboxにてcentosを立ち上げていつもプログラミングに勤しんでるわけですが、そろそろデバッグ機能をatomにつけたいと思いまして、Xdebugをインストールしようかと考えました。
厳密に言うと、atomのプラグインであるPHP-debugにXdebugを紐付けることでデバッグを可能にしようというものです。
簡単にいくと思いきや、これが一週間悩みつづけることになるとは・・・・・
まずXdebugをターミナル上でインストールしようかと思い調べたところ、PearとdevelopmentToolをインストールしないといけないみたい・・・
ふむふむ・・・
ターミナルにて
$ yum -y install php-pear
$ yum -y install php-devel
でインストール・・・・・
あれ、develはもう入れてるみたい・・・いつ入れたんだろ・・・。
さてこれにてPeclコマンドが使えるようになったため、
$ pecl install xdebug
にてXdebugをインストール!!!!
が、しかし・・・
ターミナル上には、
Warning: Invalid argument supplied for foreach() in Command.php on line 259
Warning: Invalid argument supplied for foreach() in /usr/share/pear/PEAR/Command.php on line 259
Warning・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・
XML Extension not found
という無数のわけのわからない羅列が。
たくさんたくさんババールはググりました。
しかし、同じような現象にあってる人がなかなか見つからず・・・・・。
やっと質問板にて同じような人が(Peclコマンドじゃないみたいだったけどね)いました。
もちろん外国人のため英語での質問→回答
なんとか訳し、原因は、peclのモジュールにあるとのこと・・・・・
なるほど・・・・・わからん。
モジュールに詳しい私の知り合いに聞いた所、
vi `which pecl`
でpeclコマンドの内容を確認してみたら?と返ってきたので、
いざ確認したところ、
exec $PHP -C -n -q $INCARG -d date.timezone=UTC -d output_buffering=1 -d variables_order=EGPCS -d safe_mode=0 -d register_argc_argv="On" $INCDIR/peclcmd.php "$@"
と表示され、これの何がおかしいかというとphp.iniに書かれている記述を無視してphpを実行するためにコンパイルの時点でxmlモジュールを読み込む設定にしていないとxmlを読み込まず、エラーとなってしまうことがあるとのこと
ここの -n 部分を消してあげたら問題解決なのだと・・・
全然納得できなかったですが、おかげでPeclコマンド使うことができました。
ほんとこれに一週間悩みました。
同じような人見つからないのも不思議
それではババールでした。