phpstorm
に_php.ini
_と_Debug config
_を設定しました。 phpstormイベントログのphpスクリプト出力を次のようにデバッグしようとしています:
_"Error running script.php: Port 9000 is busy"
_
php.iniの終わり:
_ [XDebug]
zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port="9000" (the default port is 9000)
xdebug.profiler_enable=1
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir="/etc/php5/xdebug/profiler_output_dir"
_
PStormのデバッグポートも9000に設定されています。次の場合の_netstat -na
_出力:
_tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
_
他のポートに設定するとどうなりますか?例えば、それを_10001
_に設定することは、仕事をするようです。または、それを適切に機能させる方法。 xDebug
の仕組みを理解しているかどうかはわかりません。ファイルにブレークポイントを設定してphpstormでDebug("script.php")(Shift+F9)
を実行するようなものですか?
誰かがアイデアを持っていますか?
編集:
差出人: http://xdebug.org/docs/remote
_xdebug.remote_port
Type: integer, Default value: 9000
The port to which Xdebug tries to connect on the remote Host. Port 9000 is the default for both the client and the bundled debugclient. As many clients use this port number, it is best to leave this setting unchanged.
_
ポートを9000以外に変更するとどうなりますか?たぶん5万を超えるもの。
Lsofおよびnetstatで、90ポートで実行されているプロセスのPIDを識別できませんでした。一時的に最も簡単な解決策は、phpstorm
とphp.ini
のポートを実際に使用されていない他のもの(10kなど)に変更することです。
基本的に他のいくつかのプロセスは9000を使用し、それを手放すことを使用していません。通常、私にとっては別のIDE同時に実行されています
Windows修正->
cmd.exeを開く
netstat -o
C:\Users\AMC75>netstat -o
Active Connections
Proto Local Address Foreign Address State PID
TCP 10.6.176.132:27018 livlt0124661:55375 ESTABLISHED 11104
TCP 10.6.176.132:49271 chilynfe01:5061 ESTABLISHED 10120
TCP 10.6.176.132:49379 hhefs14:netbios-ssn ESTABLISHED 4
TCP 10.6.176.132:49383 chifs08:netbios-ssn ESTABLISHED 4
TCP 10.6.176.132:51034 157.55.56.143:40002 ESTABLISHED 11104
TCP 10.6.176.132:51038 db3msgr6011007:https ESTABLISHED 11104
TCP 10.6.176.132:51049 wb-in-f125:5222 ESTABLISHED 10860
TCP 10.6.176.132:51282 wpapp020:50124 ESTABLISHED 848
TCP 10.6.176.132:53014 ec2-107-23-104-135:https ESTABLISHED 10860
TCP 10.6.176.132:53015 ec2-107-23-104-135:https ESTABLISHED 10860
TCP 10.6.176.132:54774 157.56.116.205:12350 ESTABLISHED 11104
TCP 10.6.176.132:54822 a23-198-48-60:https CLOSE_WAIT 7500
TCP 10.6.176.132:55166 upmon070:3306 ESTABLISHED 2652
TCP 10.6.176.132:55261 lhr08s03-in-f9:http ESTABLISHED 10860
TCP 10.6.176.132:55570 upmon070:3306 ESTABLISHED 10980
..... BLAH BLAH BLAH
taskkill/PID XXXX
GNU/Linuxソリューション(Windows以外にも人生があるため):
@aqmの解法に従う
最初にポート9000を使用してプロセスを見つけます。
netstat -tulpn | grep :9000
次のような出力が得られます。
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3993/programname
このコマンドでプロセスを強制終了するには、PIDが必要です。
kill -9 3993
[〜#〜] note [〜#〜]:プロセスが彼のPIDを表示していない可能性があります。デフォルトのポート9000として使用するPHP-FPMを実行しています。この場合、PHP-FPMポートまたはPHP Xdebugポートを変更できます。
解決策1-Xdebug構成の変更:
編集/etc/php/php.ini
xdebug.remote_port=9000
を検索し、新しいポートに置き換えます
ソリューション2-PHP-FPMポートの変更:
編集/etc/php/php-fpm.conf
行をlisten = 127.0.0.1:9000
で検索し、9000を新しいポートに置き換えます
次にサービスをリロードします:
systemctl reload php-fpm
次に、nginxまたはApacheの構成を編集してこの新しいポートを指定し、127.0.0.1:9000
または/etc/httpd/httpd.conf
で/etc/nginx/nginx.conf
を検索して、新しいポートに置き換えます。
サーバーをリロードします。
systemctl reload nginx
または
systemctl reload httpd
それが役に立てば幸いです:)、
ナマステ。
将来の自分への注意:
私の場合、これは仮想マシンのポートフォワーディング(Virtual Boxで無駄)を使用したことが原因でした。 9000
を転送することをお勧めします。
解決策:標準の仮想ボックスであるVM IP 10.166.53.1
に接続します
/etc/php5/cgi/conf.d/xdebug.ini
の内容
; xdebug configuration
; xdebug.remote_Host = localhost
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_connect_back = 1
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.idekey = "PHPSTORM"
xdebug.remote_log = /var/log/xdebug.log
まず、トピックから少し外れたとしても、役立つと思います。 docker-composerプロジェクトごとに異なるネットワークインターフェイスを使用しています。このようにして、/ etc/hostsの永続的なドメイン名を心配することなくマップできます。この例では192.168.33.102 project.domain.local
です。
Yaml設定の例を次に示します。
nginx:
build: docker-images/nginx
links:
- "php"
ports:
- "192.168.33.102:80:80"
php:
build: docker-images/php/7.0.1-fpm
ports:
- "192.168.33.102:10000:9000"
Phpコンテナーは9001でphp7.0-fpm
をリッスンし、-90でxdebug
をリッスンし、ポートを公開しません。
PhpStormデバッグポートはデフォルトの9000に設定され、サーバーホストは192.168.33.102
(または/ etc/hostsからの値、つまりproject.domain.local
)に設定されます。
Phpコンテナーのポートで確認できるように、別のマッピングポートが10000に設定されています。PhpStormからビジーエラーを削除するために、それは9000以外の別の値にすることができます。
また、docker-composeでポートをバインドすることも重要です。ポートをマッピングしないと機能せず、9000:90でも機能しませんでした。
それが他の誰かを助けることを願っています!
PS:ここにxdebug.iniがあります:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_connect_back=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true