2012-07-19 35 views
19

i của thích để có được gỡ lỗi từ xa để làm việc với các cấu hình phần mềm sau đây:PHP gỡ lỗi từ xa: XDebug không thể kết nối JetBrains php Bão client

Win 7 Pro 64bit WAMP server 2.2 (32bit) bao gồm. Apache 2.2.22, PHP 5.4.3, XDebug php_xdebug-2.2.1-5.4-vc9.dll JetBrains PHPStorm 4.0.3

1.) WAMP được thiết lập và chạy, trang của tôi có thể được tìm thấy dưới localhost/fox/

2.) PHP bão có một dự án nơi có một ánh xạ giữa sourcefiles tôi và apache alias localhost/fox

2.) tôi đã cài đặt phần mở rộng php XDebug và thêm các dòng sau vào php của tôi. ini

[xdebug] 
zend_extension="c:/wamp/bin/php/php5.4.3/zend_ext/php_xdebug-2.2.1-5.4-vc9.dll" 
xdebug.remote_enable=On 
xdebug.remote_host="localhost" 
xdebug.remote_port=9000 
xdebug.remote_connect_back=On 
xdebug.remote_autostart=On 
xdebug.profiler_enable=On 
xdebug.profiler_enable_trigger=off 
xdebug.profiler_output_name=cachegrind.out.%t.%p 
xdebug.profiler_output_dir="c:/wamp/tmp" 
xdebug.remote_log="C:/wamp/tmp/xdebug.log" 
xdebug.remote_cookie_expire_time=6000 

Điều này sẽ định cấu hình Remot e Gỡ lỗi XDebug và địa chỉ gọi lại.

Tôi đã kiểm tra cài đặt của tôi ở đây: xdebug.org/wizard.php

3.) Tôi cấu hình phpstorm, lần đầu tiên tôi đã thêm các máy chủ địa phương

và sau đó kiểm tra cài đặt của tôi ở đây

http://www.bilder-hochladen.net/files/jrn0-2-c81e-jpg-nb.html

(tôi đã thử 127.0.0.1/fox làm địa chỉ Máy chủ, và thay vào đó là localhost)

hier gỡ rối của tôi cài đặt: http://www.bilder-hochladen.net/files/jrn0-1-c4ca-jpg.html

Bây giờ tôi khởi động lại apache của tôi, tôi đi vào phpstorm, thiết lập một điểm break (đó là màu đỏ), nhấp vào chức năng

Run -> Start listen to PHP Debug Connections 

Người nhận điện thoại là Turing thành màu xanh lá cây, những gì bao giờ mà chính xác có thể có nghĩa nhưng đó là một tín hiệu tích cực đối với tôi.

Khi tôi chạy tập lệnh php của mình trên máy chủ web cục bộ absolutley không có gì xảy ra, chương trình chạy qua điểm ngắt và không dừng lại.

Trong Xdebuggers log (C: /wamp/tmp/xdebug.log) i tìm thấy vô số những tin nhắn như thế này:

I: Checking remote connect back address. 
I: Remote address found, connecting to ::1:9000. 
E: Could not connect to client. :-(
Log closed at 2012-07-19 14:21:08 

Một nơi nào đó trên Internet tôi tìm thấy những gợi ý, mà các cửa sổ tường lửa có thể chặn các thông tin liên lạc vì vậy tôi tắt nó hoàn thành nhưng điều đó đã không giúp đỡ.

Tôi cũng đã cố gắng kết nối qua telnet với localhost: 9000 và tôi nhận được phản hồi từ phpstorm.

Có ai có ý tưởng tìm kiếm lỗi hoặc điều gì khác mà tôi có thể thử để làm cho công cụ này hoạt động không?

Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn trước, Michael

tái bút: Xin lỗi tôi không được phép đăng nhiều hơn hai liên kết vì tôi mới ở đây, vì vậy không có liên kết đến trình hướng dẫn xdebug.

+2

Sử dụng TcpView, netstat, Process Explorer hoặc công cụ tương tự để xác minh rằng PhpStorm đang nghe trên cổng 9000. Sau đó thử kết nối với nó bằng cách sử dụng 'telnet 127.0.0.1 9000'. Nếu telnet hoạt động, XDebug cũng sẽ hoạt động. Nếu không, đó là một số vấn đề về mạng. – CrazyCoder

+0

Bạn có đang sử dụng một trong các dấu trang PHPStorm từ trình duyệt của mình để kích hoạt trình gỡ lỗi (hoặc tương đương) không? – redbirdo

+0

Hi CrazyCoder, tôi quên đề cập đến rằng tôi đã thử telnet và nó làm việc phpstorm là lắng nghe. dù sao cũng cảm ơn. – cimmx

Trả lời

6

Bạn có thể thử tắt IPV6 http://support.microsoft.com/kb/929852, tôi nghĩ đây là sự cố khi bạn cố kết nối.

Tìm thấy địa chỉ từ xa, kết nối với :: 1: 9000.

Hệ thống đang cố gắng kết nối với IPV6 và tôi nghĩ rằng XDebug chỉ cho phép IPV4.

+0

Cảm ơn bạn! Cấu hình máy chủ ảo MAMP Pro của tôi tự động thêm các mục địa chỉ IPv6 (:: 1) vào/etc/hosts. Sau khi gỡ bỏ chúng, xDebug đã hoạt động trở lại như mong đợi! –

0

Đâu là điểm ngắt của bạn trong mã của bạn? Tôi biết rằng XDebug có thể buồn cười.

Đối với PHP 5.4, cài đặt Xdebug của bạn nên được

[XDebug] 
zend_extension="<path to php_xdebug.dll>" 
xdebug.remote_enable=1 
xdebug.remote_port="<the port for XDebug to listen to>" (the default port is 9000) 
xdebug.profiler_enable=1 
xdebug.profiler_output_dir="<AMP home\tmp>" 

http://www.jetbrains.com/phpstorm/webhelp/configuring-xdebug.html

+0

Xdebug.profiler_output_dir yêu cầu điều gì? Đường dẫn đến thư mục tmp trên hệ thống? Tôi đang sử dụng Ubuntu, vì vậy nó nên được thiết lập quá:/tmp ? – johnsnails

+0

@johnsnails Thư mục nơi đầu ra hồ sơ sẽ được ghi vào, đảm bảo rằng người dùng PHP sẽ chạy như đã ghi quyền truy cập vào thư mục đó. Nó mặc định là '/ tmp' – bear

12

Có lẽ hơi muộn nhưng ...

Ở đây bạn có một sự mâu thuẫn trên các thiết lập của bạn:

xdebug.remote_host="localhost" 
xdebug.remote_connect_back=On 

Hai cài đặt đó trùng nhau. Trường hợp của bạn là gì?

a) Bạn muốn gỡ lỗi ứng dụng của mình chỉ từ một nguồn duy nhất (ví dụ: bạn đang phát triển và triển khai thành localhost).

Sau đó, bạn sắp hoàn tất: bạn đã xác định rằng máy chủ từ xa là localhost. Thảo luận ra các dòng remote_connect_back (với ;)

b) Bạn muốn chấp nhận nhiều nguồn phát triển (ví dụ, một số máy gỡ lỗi các ứng dụng trong cùng một mạng).

Sau đó, dòng remote_host đang bị ghi đè, vì vậy bạn có thể xóa hoặc nhận xét nó.

Đây là cấu hình bạn đang chạy. Vì vậy, có gì sai với nó? Hãy khám phá tập lệnh này chạy tập lệnh này:

<? 
echo $_SERVER['REMOTE_ADDR']; 

Đầu ra sẽ là ::1. Vâng, máy chủ đang thực hiện yêu cầu đến máy chủ Apache của bạn là localhost. Và Apache đang giải quyết tên đó là địa chỉ IPv6 ::1, mà cuối cùng là không sai. Nhưng Xdebug không thể kết nối với địa chỉ IPv6. Xem:

I: Remote address found, connecting to ::1:9000. 
E: Could not connect to client. :-(

Vì vậy, mục tiêu của chúng tôi sẽ làm cho Apache để giải quyết localhosttốt đến một địa chỉ IPv4 (không vô hiệu hóa bất kỳ hỗ trợ cho IPv6 ở cấp hệ điều hành cũng như ở cấp Apache). Điều này có thể đạt được bằng cách thêm vào tệp hosts của bạn vào dòng tiếp theo:

127.0.0.1 localhost 

Hack đơn giản này sẽ thực hiện thủ thuật! Hiện tại, localhost sẽ luôn được giải quyết là địa chỉ IPv4, trong khi ::1 sẽ vẫn hoàn toàn dễ hiểu.

+1

cảm ơn rất nhiều. các trick với các tập tin host là chìa khóa thiếu cho tôi;) – ikkez

+3

Ahh bạn là anh hùng của tôi. Tôi đã dành hai giờ qua đi qua mọi bài viết trên internet và tất cả họ đều có tập hợp remote_connect_back. Cảm ơn bạn đã giải thích và tiết kiệm sự tỉnh táo của tôi .. +1 – PersyJack

+0

Vui vì nó hữu ích. Đó là một sự xấu hổ OP không đặt câu trả lời là đúng –

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