2013-10-01 19 views
7

Tôi đặt php.iniDebug config trong phpstorm. Đang cố gắng để đầu ra php script debug trong phpstorm log tổ chức sự kiện với:Lỗi khi chạy script.php: Cổng 9000 đang bận

"Error running script.php: Port 9000 is busy" 

cuối 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" 

cổng gỡ lỗi trong pStorm cũng được thiết lập trên 9000. netstat -na đầu ra với:

tcp  0  0 127.0.0.1:9000   0.0.0.0:*    LISTEN 

Nếu tôi đặt thành cổng khác. ví dụ: đặt nó thành 10001 dường như thực hiện công việc. Hoặc chỉ cách làm cho nó hoạt động đúng cách. Tôi không chắc liệu tôi có hiểu cách hoạt động của xDebug hay không. Nó giống như chạy Debug("script.php")(Shift+F9) trong phpstorm với thiết lập breakpoint trong tập tin?

Có ai đó có ý tưởng không?

EDIT:

Từ: 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. 

gì nếu tôi thay đổi cổng cho khác hơn 9000? Có lẽ một cái gì đó hơn 50k.

+1

* "Port 9000 đang bận" * - điều này có nghĩa là một ứng dụng khác (không phải PhpStorm .. hoặc phiên bản PhpStorm hoàn toàn khác) đã được nghe trên cổng đó. IDE lắng nghe (nhận các kết nối) trên cổng đó và xdebug là một trong những người kết nối với IDE và không phải là cách khác xung quanh. Tài liệu xdebug chính thức có giải thích chi tiết về cách xdebug làm việc với trình gỡ lỗi (IDE): http://xdebug.org/docs/remote – LazyOne

Trả lời

3

Không thể xác định với lsof và netstat pid của quá trình chạy trên cổng. Nhược điểm tạm thời đơn giản nhất là chỉ thay đổi cổng theo số phpstormphp.ini cho một thứ khác không thực sự được sử dụng (như 10k).

4

Về cơ bản một số quá trình khác đang sử dụng 9000 và không sử dụng để cho nó đi, bình thường đối với tôi khác IDE chạy cùng một lúc

của Windows sửa chữa ->

  1. FIND QUY TRÌNH SỬ DỤNG 9000

mở lên 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. KILL TRÌNH

taskkill/PID XXXX

  1. LỢI NHUẬN ...?, Cũng bây giờ bạn sẽ có thể chạy các chương trình gỡ rối
2

GNU/Linux Giải pháp (vì có cuộc sống ngoài Windows):

F ollow theo giải pháp của @aqm

quy trình tìm kiếm đầu tiên bằng cổng 9000.

netstat -tulpn | grep :9000 

Bạn sẽ nhận được một đầu ra như thế này:

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 

Bạn cần PID để giết chết quá trình với lệnh này:

kill -9 3993 

LƯU Ý: Có lẽ quá trình của bạn không hiển thị PID của mình, có thể bạn đang chạy PHP-FPM sử dụng như cổng mặc định 9000, trong trường hợp này bạn có thể thay đổi cổng PHP-FPM hoặc cổng PHP Xdebug.


SOLUTION 1 - Thay đổi cấu hình Xdebug của bạn:

chỉnh sửa /etc/php/php.ini

tìm kiếm xdebug.remote_port=9000 và thay thế bằng cổng mới của bạn


SOLUTION 2 - Thay đổi Cảng PHP-FPM :

Sửa /etc/php/php-fpm.conf

kiếm phù hợp với listen = 127.0.0.1:9000 và thay thế 9000 với cổng của bạn mới

sau đó tải lại dịch vụ:

systemctl reload php-fpm 

Sau đó chỉnh sửa nginx hoặc cấu hình apache nói với cảng mới này, tìm kiếm 127.0.0.1:9000 trong /etc/httpd/httpd.conf hoặc /etc/nginx/nginx.conf và thay thế bằng cổng mới

tải lại máy chủ của bạn:

systemctl reload nginx 

hoặc

systemctl reload httpd 

Tôi hy vọng nó sẽ giúp :),

namaste.

3

lưu ý về bản thân trong tương lai:

Trong trường hợp này, việc này được thực hiện bằng cách sử dụng chuyển tiếp cổng máy ảo (lang thang trên Hộp ảo). Tôi nghĩ rằng chuyển tiếp 9000 là một ý tưởng tốt.

SOLUTION: kết nối với VM IP 10.166.53.1 đó là tiêu chuẩn Virtual Box enter image description here

nội dung của tôi /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 
+1

Cùng một vấn đề ở đây. Rõ ràng bạn không cần phải chuyển tiếp cổng này. Loại bỏ việc chuyển tiếp cổng 9000 đã sửa nó cho tôi. Bây giờ tôi có thể sử dụng Vagrant + XDebug + PhpStorm –

2

Thứ nhất, ngay cả khi là một chủ đề ít ra, tôi nghĩ rằng nó giúp. Tôi đang sử dụng một giao diện mạng khác nhau cho mỗi dự án docker-composer.Bằng cách này tôi có thể ánh xạ một tên miền liên tục trong/etc/hosts mà không phải lo lắng, trong ví dụ này là 192.168.33.102 project.domain.local.

Dưới đây là một ví dụ về thiết lập 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" 

Container php nghe trên cho php7.0-fpm và trên cho xdebug và không tiếp xúc với bất kỳ cổng.

Cổng gỡ lỗi PhpStorm được đặt thành mặc định 9000 và máy chủ lưu trữ máy chủ được đặt thành 192.168.33.102 (hoặc giá trị từ/etc/hosts, là project.domain.local).

Như có thể thấy trong các cổng của vùng chứa php, một cổng ánh xạ khác được đặt thành 10000, có thể là bất kỳ giá trị khác nào khác hơn 9000, để loại bỏ lỗi bận khỏi PhpStorm.

Ngoài ra, điều quan trọng là ràng buộc cổng trên docker-compose. Nó không hoạt động mà không cần ánh xạ cổng và nó không hoạt động với 9000: 9000.

Hy vọng nó sẽ giúp người khác!

PS: ở đây là 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 
7

Quá trình này, được chạy trên cổng 9000, có thể là PhpStorm riêng của mình.

Kiểm tra các cổng đang được sử dụng như Jacob nói (trên Windows cmd: netstat -a -b): enter image description here

Nếu PhpStorm.exe ist liệt kê dưới : 9000 bạn chỉ cần phải thay đổi cảng built- trong máy chủ trong cài đặt> Xây dựng, thực thi, triển khai>Trình gỡ lỗi đến ví dụ (đây là cài đặt mặc định của cài đặt PhpStorm đồng đội của tôi).

+0

Tôi đã nhìn rất nhiều trên web và không có gì làm việc cho tôi ... cho đến khi tôi thử đề xuất của bạn !! (y) – Sebastian

+0

Đã làm việc cho tôi! Tôi đã có cùng một vấn đề của PHPStorm bằng cách sử dụng cổng 9000 :) – Avinash

Các vấn đề liên quan