xdebug を Netbeans 8.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 構成を確認することを忘れないでください。次のようになります。
これが、このやや曖昧で紛らわしい問題に光を当てることを願っています。
幸運をお祈りしています!