xdebugをNetbeans8.0.2で動作させるために、ほぼ24時間の苦い実行を行った後、UbuntuおよびUbuntu関連のすべてのスタックで動作するソリューションを見つけました。
問題番号1:PHPとxdebugのバージョンは互換性がなければなりません
Linuxセットアップを実行していてapt-getでxdebugをインストールしている場合、適切なxdebugバージョンを取得できないことがあります。私の場合、最新のphpバージョンがありましたが、古いxdebugバージョンがありました。それは私の現在のXubuntuバージョンによるものであるに違いありません。ソフトウェアのバージョンは、実行しているOSのバージョンに依存するリポジトリに依存しています。
解決策:PHPには、PECLと呼ばれる優れた拡張マネージャーがあります。ここに記載されている手順に従って、稼働させてください。まず、コメントでメンバーが指摘しているように、PECLを機能させるには、PHPの開発者パッケージをインストールする必要があります。
sudo apt-get install php5-dev
次に、PECLを使用して、xdebugの最新の安定バージョンをインストールできます。
sudo pecl install php5-xdebug
これを実行すると、適切なバージョンのxdebugがインストールされますが、使用する準備ができていません。その後、有効にする必要があります。私はそれを行う方法について多くの提案を見てきましたが、問題の事実は、PHPがクライアントとサーバー(この場合はApache)の両方でいくつかのモジュールを有効にする必要があるということです。ここでのベストプラクティスは、php5enmodと呼ばれるモジュールを有効にする組み込みの方法を使用することのようです。使用法はここで説明されています。
問題番号2:モジュールを正しく有効にする
まず、/ etc / php5フォルダー内に移動する必要があります。そこには、apache2、cli、mods_availableの3つのフォルダーがあります。mods_availableフォルダーには、特定のモジュールをアクティブ化するための手順が記載されたテキストファイルが含まれています。命名規則は[module] .iniです。それらのいくつかの内部を見て、それらがどのように設定されているかを確認してください。
次に、mods_availableフォルダー内にiniファイルを作成する必要があります。xdebug.iniという名前のファイルを作成し、ファイル内に次のように貼り付けます。
[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
上記の例とまったく同じように、ディレクティブ[xdebug]が存在することを確認してください。モジュールが機能することが不可欠です。実際、コード全体をコピーして貼り付けるだけで、そのように幸せな人になります。:D
注:zend_extensionパスは非常に重要です。この例では、PHPエンジンの現在のバージョンを指していますが、最初に/ usr / lib / php5に移動し、番号が付けられたフォルダーが正しいことを確認する必要があります。名前をそこに表示されているものに調整し、そこにいる間に、フォルダー内をチェックして、xdebug.soが実際にそこにあることを確認します。あなたがすべてを正しくやったなら、そうあるべきです。
xdebug.iniを作成したら、モジュールを有効にします。これを行うには、コンソールを開いて次のように入力します。
php5enmod xdebug
すべてがうまくいけば、PHPはこのファイルへの2つのリンクを作成しました。1つは/etc/php5/apache2/conf.d内に、もう1つは/etc/php5/cli/conf.d内に作成されました。
Apacheサーバーを再起動し、コンソールで次のように入力します。
php -v
次のようなものが得られるはずです。
PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.3.1, Copyright (c) 2002-2015, by Derick Rethans
これは、PHPクライアントがxdebug.iniファイルを読み取り、xdebug.soモジュールをロードしたことを意味します。ここまでは順調ですね。
次に、Webサーバーのどこかにphpinfoスクリプトを作成し、実行します。これは、すべてがうまくいった場合に表示されるはずです。
これが表示された場合、Apacheもモジュールをロードしており、おそらく準備ができています。次に、Netbeansが正しくデバッグされるかどうかを確認しましょう。非常に単純なスクリプトを作成し、いくつかの変数を追加し、それらに値を与え、それらにブレークポイントを設定します。次に、CTRL + F5を押して、デバッガーパネルの[ステップイン]をクリックし、次のようなものが表示されるかどうかを確認します。
tools / options / phpで、デバッグ用のNetbeans設定を確認することを忘れないでください。次のようになります。
これが、このかなりあいまいで紛らわしい問題に光を当てることを願っています。
ご多幸を祈る!
phpinfo()
ロードされた拡張機能として報告?それはあなたが「働く」という意味ですか?