2012-03-18 16 views
3

私はMacでxdebugを動かそうとしています。私はApache(2.2.1)とPHP(5.3.8)の組み込みバージョンでOS 10.6を使用しています。私は基本的にこれらのステップから構成さXdebugのウェブサイト上で "tailored installation instructionsを" に続く:OS X上のxdebugが部分的に動作しています(端末ではスタックトレースを表示しますが、ブラウザでは表示しません)。

  1. ビルドはXdebug(バージョン2.1.3)のソースから
  2. 移動xdebug.so
  3. /usr/lib/php/extensions/no-debug-non-zts-20090626にphp.iniに追加します。 zend_extension = /usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
  4. ウェブサーバーを再起動します。

私が理解していることから、それはそうでなければなりません。私はほとんどの人がxdebugをPHPEclipseのようなIDEで使うことを知っていますが、ページのデバッグ出力を得るために必要なようには聞こえません。古い命令の多くにはMAMPのインストールが含まれていますが、もはや必要ではないようです。

サインxdebugのは、働いている:私はphp -mphpinfo()を実行すると、私はXdebugをの期待情報を取得します。スクリプトでは、私はxdebug_is_enabled()(1を返します)とxdebug_get_function_stack()(スタックを返します)のような関数を呼び出すことができます。 xdebugをインストールした主な理由は、エラーが発生したときにスタックトレースを取得することでしたが、それは起こっていません。 this documentation pageによると、display_errorsがphp.iniのOnに設定されている限り、スタックトレースを取得する必要があります。致命的なエラー(例:$ xがオブジェクトでない場合は$x->awesomefunction())を生成するコードと同様に、警告(たとえば、echo(hello))を呼び出すコードを試しました。どちらもxdebugの出力を生成しません。致命的なエラーが発生すると、ページは自動的に消えます。リンク先のドキュメントにあるテストコードも何も生成しません。

UPDATE:私は端末からの致命的なエラーでスクリプトを実行すると、xdebugからスタックトレースを取得することが判明しました。私は

また、ブラウザからスクリプトを実行するときしかし、それはまだ現れていない、通常のエラー報告は現在壊れている:以前が、私はコマンドを含めることにより、エラー出力を取得したい:

ini_set("display_errors","1"); 
ERROR_REPORTING(E_ALL); 

さて、私のスクリプトにこれらの行を置いても、エラーの報告はありません。 (ブラウザでは、端末からスクリプトを実行するとエラーが表示されます)

ここで何が問題なのですか?私はxcodeインストールから何かを残しましたか?私は、システム上のどこかでエラーを抑制する設定をしていますか?私は考えることができるすべてを試しましたが、あなたが持っているアイデアを試してみるのは嬉しいです。

+1

エラーを探すためにブラウザではなくコンソールでテストを実行しようとしましたか?興味深い! –

+0

私はコンソールから致命的なエラーを生成するスクリプトを実行すると、xdebugからスタックトレースを取得しますが、ブラウザで実行してもまだ実行されません。私はその質問を更新します... – octern

+0

プリビルドLIIP PHPパッケージの使用を検討しましたか?それらはxDebugを組み込んでおり、私はそれらを使いやすく設定することができました。 http://php-osx.liip.ch/ – GordonM

答えて

0

数時間のスラッシングの後、私のテストファイルの1つにdisplay_errorsを0に設定した別のファイルが含まれていることがわかりました。もう1つのテストファイルはxdebugサイトからまっすぐでしたが、それを使用していたので、私はそれが正しく動作することを妨げたいくつかの他の設定エラーを導入しました。私は本当に恥ずかしい!デバッグ中の体系的で反復可能なテストの重要性を今日のオブジェクトレッスンにしましょう。明るいところでは、xdebugは現在桃のように動作しています。要約する

、働いていた一連のステップだった:ソースから

  1. ビルドはXdebug(バージョン2.1.3)
  2. にxdebug.so
  3. 移動は/ usr/libに/ PHP /拡張/ NO-デバッグ非ZTS-20090626
  4. のphp.iniに追加します。代替としてzend_extension = /usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
  5. は、php.iniに追加します。 display_errors =オン
  6. 再起動ウェブサーバー
0

ブラウザではなくコンソールで動作している場合、おそらくxdebugの設定上の問題です。

私はMacユーザーではありませんが、Ubuntuにはコンソール用とapache用の2種類のphp.iniファイルがあります。これがMacの場合でも、xdebugが有効で、両方のphp.iniファイルに正しく設定されているかどうかを確認できます。

また、guideに記載されているxdebugの設定を確認することもできます。

+0

Apacheは私が編集しているのと同じphp.iniファイルを使用しています。たとえば、スクリプト内でxdebug_is_enabled()関数を使用できます。 xdebug拡張をロードするphp.iniの行をコメントアウトすると、その関数はブラウザと端末の両方で致命的なエラーを引き起こします。 – octern

関連する問題