過去の私のブログ、xdebug やらZend Debugger を使う前の予備調べ にある
XDebug というデバッガーを動かすためのphp.ini の設定でずっと疑問に思っていた設定がある。
その設定項目は、
zend_extension
zend_extension_ts
の違いであった。
この違いの意味が何処に書いてあるのか今までわからなかった。
しかし公式サイトにしっかり書いてあったのでその事をメモしておく。
公式サイトには、
以下の4つが存在した。
--- --- php.ini に書くらしい、xdebug の設定(※なにやら環境によって違うので鵜呑みは危険!) --- ---
zend_extension string
動的読み込み可能な Zend 拡張モジュール (たとえば APD) を PHP の起動時に読み込む際の絶対パス。
zend_extension_debug string
zend_extension の亜種で、デバッグ情報つきでコンパイルされた拡張モジュール用のもの。
zend_extension_debug_ts string
zend_extension の亜種で、デバッグ情報つきかつスレッドセーフでコンパイルされた拡張モジュール用のもの。
zend_extension_ts string
zend_extension の亜種で、スレッドセーフでコンパイルされた拡張モジュール用のもの。
--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
デバッグ情報付きというのは、PHPをデバッグする為のものらしく、
PHPがデバッグ情報付きでコンパイルされているかどうかによって _debug とついた読み込みを
するかしないかを選ばなくては正確に動作しない様だ。
その情報を知るには、phpinfo関数を用い、その項目から、
でデバッグでコンパイルされているかどうか調べ、
no でないならばデバッグなので _debug がついている物を使う。
(※よく考えたらコンパイルしたら変わることは無いと思われる)
そいて、 _ts についてもphpinfo関数を用い、その項目から、
でスレッドセーフが有効ものかどうか調がついている物を使う。
enabled ならば _ts が付いている物を使う。
Debug Build と Thread Safety によるextension 表(※多分間違っています!)
|
Debug Build |
no |
noじゃない(Yesとかon?) |
Thread Safety
|
disabled |
zend_extension |
zend_extension_debug |
enabled |
zend_extension_ts |
zend_extension_debug_ts |
色々調べてみるとこんな感じになるのかと思った。
追加情報: ---------------------------
が!!!!!
これは間違えかもしれない!!!!
このページの下の方にありますが、phpinfo()のステータスでThread Safety はどうも
Apache との連携の事を指し示し、xdebug との連携の意味では無いのかもしれません。
そしてDebug Build もデバッグした時に決まってしまうのでしょうから、
後から変わることは多分ないでしょう。
--------------------------------
まず、ここまでの参考サイト:
○Xdebug によるデバッグ環境の構築 - Web/DB プログラミング徹底解説
○xdebug追加をphp.iniに記述するとき、
zend_extension=か zend_extension_ts=なのかを見極めるには。
: PHPの種 ブログ
なにか私のWindows 環境では、php.ini にxdebug の設定をすると説明どおりの設定では動かない件
そしてココからが問題だ!
私の場合は、phpinfo()で調べると、
であったので、その場合は、zend_extension_ts で良いと思ったのだが動かない!
不思議な事にThread Safety が無効(disabled) の
zend_extension でないと動かないのである。
このThread Safety の意味はなんなんだろうか?
追加情報: ---------------------------
もう一度よく考えてみた。
現時点でWindows版のPHP のphpinfo関数 による
Thread Safety がenabled である表記はApache に対してのスレッドセーフの事を示していて、
xdebug の為の表記ではないと思われる。
確認の為にあえてNo-Thread-Safe の
5.3 VC6 Non-thread-safe (32 bit) を使ってzend_extension_ts はもちろん、
zend_extension の設定を使ってみましたが、xdebug のがphpinfo関数でステータス一覧は
出てこなかったので、なぜか動かない状況でした。
もし何か良い情報があれば、気軽にコメントもらえると助かります。
私の動いてる環境は「zend_extension = の書式」 + 5.3 VC6 (32 bit) (Tread Safe) のDLL で
動作確認が取れています。
xdebug公式 ダウンロード:download/SVN
--------------------------------
一応スレッドセーフの関連はApache の動作をスレッドを用いる設定でも出てきた記憶があるので
こちらもどう動いているかなどの参考URL
○@IT:Apache 2.0の必須設定と基本セキュリティ対策(1/3)
xdebug
xdebug support |
enabled |
Version |
2.1.0 |
Supported protocols |
Revision |
DBGp - Common DeBuGger Protocol |
$Revision: 1.145 $ |
・
・
(各設定の値も続く)
ステータスでは上記のこんな感じの項目が現れたらステップ実行や、変数の値を知るなど
デバッグ機能が使える様になる。
尚、この文章は後ほど修正しているので、順番的におかしく読みにくい部分があるかもしれませんがご了承下さい^^;
コメント一覧