PHP Webページを開発するためにPHPStormを使用しています。Apacheサーバー、XDebug、および単純なWeb PHPプロジェクトで問題なく動作します。問題ありません。
しかし、Laravel 5.1 Webプロジェクトをphp artisan serve
を使用してデバッグしようとすると、ブレークポイントをデバッグできません。php artisan serve
が別のサーバーを使用するようなものです...
そして私のPHPStormで、私はいつも見ます:
IDEキー '(randomNumberHere)'で着信接続を待機しています
PHPStormですべてを構成し(リモートデバッグを有効にし、ポートを修正するなど)、「通常」でPHPプロジェクトはすべて正常に動作します。
何かを変更する必要があるかどうか誰かが教えてもらえますか?
ありがとう!
php artisan serve
を使用したデバッグは、iniファイルでデバッグを有効にしない限り機能しません。
@Bogdanが理由を指摘した。 artisan serve
はPHP組み込みのWebサーバーを呼び出しますが、phpコマンドラインオプション(PHPStormではインタープリターオプションと呼ばれます)を渡しません)。
つまり、コマンドラインから実行する場合:
$ php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_Host=127.0.0.1 artisan serve
次に、-d
によって指定されたこれらのオプションは、呼び出されたPHP組み込みのWebサーバーに渡されません。組み込みサーバーの呼び出し here を確認できます。
PHPStormの回避策は、PHPビルドインWebサーバーを直接呼び出す実行構成を作成することです。
値を設定します。
localhost
8000
Use route script
を確認し、Laravelプロジェクトのルートディレクトリにあるserver.php
を選択します。-dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_Host=127.0.0.1
OK、実行します。
これで、PHPStormは、追加のインタープリターオプションを使用してphp artisan serve
と同じコマンドを実行します。実際、php artisan serve
の唯一の目的は、server.phpをPHPビルドインWebサーバーに追加することです。server.phpは、Apacheのmod_rewrite
機能をエミュレートするだけです。
更新:@ attila-szeremiからの良いリマインダー:「PHP Debug Connectionsのリッスンを開始」が有効になっていることを確認してください。 t「Debug」を使用してPhpStorm構成を実行する
私はphpstormを使用していませんが、おそらくnetbeansでのデバッグに使用するソリューションが役立つでしょう。
職人サーブは、Webコンテナーによって読み込まれたものとは異なるiniファイルを使用します
入力してこれを見つける
php --ini
私のubuntuボックスでは、次の場所にあります
Loaded Configuration File: /etc/php/7.0/cli/php.ini
Cli環境に合わせてiniを編集し、Webコンテナーで有効にするために使用したのと同じ構成を使用します。
例...
[Zend]
zend_extension=/usr/lib/php/20151012/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_Host=127.0.0.1
xdebug.remote_port=9000
これに関する唯一の警告は、これを設定している限り、php cliを使用する他のことに影響を与えるということです。
追加メモ
デバッグセッションを常に自動的に開始する場合(たとえば、CLIのデバッグ時にURL要求パラメーターXDEBUG_SESSION_START = nameを介してリモートデバッグを開始するのではなく)、この追加構成で常にリモートデバッグセッションを開始するようにXDEBUGを設定できます。
xdebug.remote_autostart = 1
https://xdebug.org/docs/all を参照してください
通常、リモートデバッグを開始するには、特定のHTTP GET/POST変数を使用する必要があります(リモートデバッグを参照)。この設定が1に設定されている場合、GET/POST/COOKIE変数が存在しない場合でも、Xdebugは常にリモートデバッグセッションを開始してクライアントに接続しようとします。
したがって、JeffryのBe Awesome in PhpStormを経由した後、私はOPと同様の状況で立ち往生していました( XdebugとLaravelに関する章)。私はブレークポイントを設定していましたが、PhpStormはそれらのポイントに従って実行を中断できませんでした。そして、正直に言うと、ここでのジョシュの回答は問題を理解するのに多少役立ちましたが、私には十分に明確ではありませんでした。それで、私は外に出て、ヒットとトライアルの方法によって自分自身で解決策を見つけました、それは私が共有したい最後の解決策です。それはまだ疑問に思っている一部の人々にとって重宝するでしょう。
まず、OPが言ったり推測したりしたように、php artisan server
does別のサーバーを使用します。これは、PHPの組み込みWebサーバーplusserver.phpルーターファイルです。そして、使用する構成はCLI構成です。 php --ini
を試して、含まれているすべての構成を見つけてください。
私の場合(Ubuntu 17.10)、含まれているXdebug構成ファイルは/etc/php/7.2/cli/conf.d/20-xdebug.ini
の場所からのものでした。リモートxdebugを有効にするために2行目を追加すると、ファイルは合計2行で次のようになります。
zend_extension=xdebug.so xdebug.remote_enable=1
次にPhpStormを構成します。
Run
> Edit Configurations
に名前を付けるか、そのままnnamedのままにします...
をクリックします+
をクリックして、任意の名前を付けます(例Laravel App)localhost
、Port as 8000
およびDebugger as Xdebug
を設定し、他のチェックマークはチェックされていません!Apply
/OK
をクリックします\user
)Apply
/OK
をクリックしますデバッガは、実際のWebサーバー(php artisan server
コマンドで起動するサーバー)の起動後にのみ機能することに注意してください。
ここで、Webサーバーを起動します。 php artisan serve
とPhpStormでRun
> Debug 'your-debug-config'
をクリックすると、すべて正常に動作します。
パート1実行>構成の編集
pHP-BuiltIn Webサーバーを選択し、Host:localhost Port:8000 //または使用しているものを設定します
OKをクリックします
パート2 XdebugヘルパーのインストールChrome拡張機能
Chromeブラウザでは、右上隅にバグアイコンが表示されているはずです。クリックして[デバッグ]を選択すると、灰色のバグアイコンが緑色に変わります。
Php artisan serveを実行してデバッグチェックポイントを設定すると、
そして、電話アイコンをクリックして、「Xdebug接続のリッスンを開始」してください。
デバッグチェックポイントをキャッチする必要があります