web-dev-qa-db-ja.com

script.phpの実行エラー:ポート9000はビジーです

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万を超えるもの。

14
Jacob

Lsofおよびnetstatで、90ポートで実行されているプロセスのPIDを識別できませんでした。一時的に最も簡単な解決策は、phpstormphp.iniのポートを実際に使用されていない他のもの(10kなど)に変更することです。

5
Jacob

ポート9000で実行されているプロセスは、PhpStorm自体である可能性があります。

前述のJacobのような現在使用されているポートを確認します(Windowsのコマンド:netstat -a -b): enter image description here

PhpStorm.exe:90にリストされていない場合は、設定>ビルド、実行、デプロイメントで組み込みサーバーのポートを変更するだけです。 > Debugger to eg 63342(これは私のチームメイトのPhpStormインストールのデフォルト設定でした)。

14
Philipp Michael

基本的に他のいくつかのプロセスは9000を使用し、それを手放すことを使用していません。通常、私にとっては別のIDE同時に実行されています

Windows修正->

  1. 9000を使用したプロセスを見つける

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
  1. キルプロセス

taskkill/PID XXXX

  1. PROFIT ...?、これでデバッガを実行できるはずです。
5
aqm

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

それが役に立てば幸いです:)、

ナマステ。

5
Lyoneel

将来の自分への注意:

私の場合、これは仮想マシンのポートフォワーディング(Virtual Boxで無駄)を使用したことが原因でした。 9000を転送することをお勧めします。

解決策:標準の仮想ボックスであるVM IP 10.166.53.1に接続します enter image description here

/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
3

まず、トピックから少し外れたとしても、役立つと思います。 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コンテナーは9001php7.0-fpmをリッスンし、-90xdebugをリッスンし、ポートを公開しません。

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
2