HomeLập trìnhPhpGỡ lỗi nhiều...

Gỡ lỗi nhiều người dùng trong PhpStorm


bởi Ray Naldo

Sử dụng Proxy Xdebug và DBGp

zy6mxhP-e7wKyxEDa6MiScE97bsEsCHC6lOT
Ảnh của Philipp Katzenberger trên Bapt

“Er, đợi một chút… Đừng chỉ sử dụng xdebug.remote_connect_back đã được giới thiệu kể từ Xdebug 2.1?”

Chắc chắn nếu máy chủ web chỉ có thể được truy cập bởi các nhà phát triển (ví dụ như máy chủ phát triển tư nhân), và nếu nó không chạy sau tường lửa NATted, và nếu bạn muốn hướng dẫn này kết thúc tại đây. Xem những IF đó? Cá nhân tôi không thích IF trong lập trình hay trong cuộc sống. Vì vậy, hướng dẫn này sẽ đi theo con đường dài hơn mà không cần IF để bắt đầu (hoặc ít nhất là ít IF hơn), đó là bằng cách sử dụng proxy DBGp của Xdebug.

Khi proxy được sử dụng, tiện ích mở rộng PHP Xdebug không còn kết nối trực tiếp với PhpStorm mà thay vào đó kết nối với máy chủ proxy DBGp. Tất cả các nhà phát triển trong nhóm sau đó lần lượt kết nối với proxy đó. Mỗi nhà phát triển có một phiên gỡ lỗi riêng chạy trên proxy này, điều này giúp có thể thực hiện gỡ lỗi nhiều người dùng cho cùng một mã trên cùng một máy chủ.

eqhOVjy5SAixdKUAx6nGopQuLuVZqKZWIkAz
https://www.jetbrains.com/help/phpstorm/multiuser-debugging-via-xdebug-proxies.html

Vì vậy, với proxy DBGp, bạn có thể giới hạn những người có thể kết nối với proxy và bạn có thể có nhiều nhà phát triển gỡ lỗi cùng một máy chủ web chạy sau tường lửa NATted.

Chạy proxy DBGp cũng cho phép bạn tránh các sự cố NAT trong đó (như đã thấy từ PHP+Xdebug trên máy chủ) tất cả các kết nối dường như đến từ cùng một IP (vì mạng nội bộ của bạn được NATted). Trong trường hợp này, bạn chỉ cần chạy proxy dbgp trên máy NAT của mình, định cấu hình xdebug.remote_host cài đặt thành địa chỉ IP của máy NAT của bạn và định cấu hình IDE để kết nối với proxy đang chạy tại <NAT-machine>;:9001.

— https://derickrethans.nl/debugging-with-multiple-users.html

Cài đặt

Ánh xạ giữa các thư mục dự án và các thư mục trên máy chủ phải được thực hiện chính xác trong PhpStorm trước tiên để gỡ lỗi hoạt động.

Đọc thêm  PHP Explode – Cách tách một chuỗi thành một mảng

Thiết lập máy chủ web

Mặc dù hướng dẫn này giả định rằng máy chủ web đang chạy trên Linux, nhưng hướng dẫn này cũng có thể được sử dụng trên các máy chủ web không phải Linux với những sửa đổi nhỏ.

1. Cài đặt Xdebug.

# PHP 7+pecl install xdebug  # PHP 5.6.xpecl install xdebug-2.5.5

2. Bật tiện ích mở rộng Xdebug, sau đó thêm cấu hình Xdebug sau vào php.ini:

[xdebug]zend_extension="<full_path_to_xdebug.so>"
; debugger settingsxdebug.remote_enable=1xdebug.remote_host=127.0.0.1xdebug.remote_port=9000

Đối với hướng dẫn này, proxy DBGp sẽ chạy trên cùng một máy với máy chủ web và sẽ sử dụng cổng mặc định của Xdebug, do đó 127.0.0.1:9000.

3. Tải xuống và cài đặt proxy DBGp để gỡ lỗi từ xa từ Gói gỡ lỗi từ xa Komodo, dành riêng cho hệ điều hành của máy chủ web của bạn. Hướng dẫn này sẽ sử dụng ứng dụng khách 64-bit Linux và PHP Remote Debugging v11.1.0. Trích xuất kho lưu trữ; để đơn giản, tôi trích xuất tất cả nội dung vào thư mục chính của mình, tức là /home/ray/.

4. Chạy proxy DBGp bằng cách thực thi pydbgpproxy tệp có tham số:

  • -d <ip_address:port> để đặt địa chỉ IP và cổng của máy sẽ nhận kết nối trình gỡ lỗi từ máy chủ web
  • -i <ip_address:port> để đặt địa chỉ IP và cổng của máy sẽ nhận kết nối gỡ lỗi từ máy tính của nhà phát triển

Trong hướng dẫn này, máy chủ web và proxy DBGp sẽ được chạy trên cùng một máy. Nếu địa chỉ IP là 10.211.1.32 và chúng tôi muốn chạy proxy trên cổng 9001 sau đó lệnh sẽ là:

pydbgpproxy -d 127.0.0.1:9000 -i 10.211.1.32:9001

Để thuận tiện, chúng tôi có thể sử dụng tập lệnh này, được lưu dưới dạng start-dbgp-proxy.sh.
Tôi đã đặt nó trên cùng thư mục với pydbgpproxy I E /home/ray/start-dbgp-proxy.sh) :

ip=$(hostname -I | awk '{$1=$1};1')pydbgpproxy -d 127.0.0.1:9000 -i $ip:9001

5. Đảm bảo cho phép kết nối từ localhost trên cổng 9000và từ các máy của nhà phát triển trên cổng 9001.

6. Chạy start-dbgp-proxy.sh. Thêm quyền thực thi file nếu không chạy được.

start-dbgp-proxy.sh

Hãy chắc chắn rằng nó có thể được chạy mà không có vấn đề gì.

INFO: dbgp.proxy: starting proxy listeners.  appid: 30430INFO: dbgp.proxy:     dbgp listener on 127.0.0.1:9000INFO: dbgp.proxy:     IDE listener on  10.211.1.32:9001

7. (Tùy chọn) Tự khởi động start-dbgp-proxy.sh trên mỗi lần khởi động máy bằng cách sử dụng crontab.

Đọc thêm  Xây dựng cho mình một CRM đơn giản từ đầu bằng PHP và MySQL

Chỉnh sửa crontab:

crontab -e

Thêm công việc định kỳ để tự động bắt đầu start-dbgp-proxy.sh trên mỗi lần khởi động:

@reboot /home/ray/start-dbgp-proxy.sh

Thiết lập ứng dụng khách

1. Menu truy cập Tools > DBGp Proxy > Register IDE trên PhpStorm.

6jGBI3DEhZtfJD5M9y2OTjN-omaT4beNyZne

2. Điền IDE key với chuỗi duy nhất giữa các nhà phát triển. Lấp đầyHostPort với địa chỉ IP và cổng của proxy DBGp (tham số -i trên Máy chủ Thiết lập #4).

DxgCWv1iY1bg6qD0RY5nMnL1KjJZ1c60LSKQ

3. Bấm OK. Bạn sẽ thấy một cửa sổ bật lên thông báo thành công. Nếu không thấy đăng ký lại IDE qua Tools > DBGp Proxy > Registà IDE. Nếu nó không thành công hoặc bạn muốn thay đổi cấu hình, tôi cót via Tools > DBGp Proxy > Confhình thành…

4. (Tùy chọn) Nếu bạn muốn bắt đầu kết nối gỡ lỗi từ trình duyệt web, bạn nên cài đặt tiện ích mở rộng gỡ lỗi trên trình duyệt của mình: Trình trợ giúp Xdebug Firefox hoặc Trình trợ giúp Xdebug Chrome. Sau đó định cấu hình Trình trợ giúp Xdebug của bạn.

Hr29yIOm6QT9tq3EKQTbvrDMb5F4r1Z17phu

Trên Firefox, nhấp chuột phải vào biểu tượng Trình trợ giúp Xdebug > Quản lý tiện ích mở rộng… > Tùy chọn Trên Chrome, nhấp chuột phải vào biểu tượng Trình trợ giúp Xdebug > Tùy chọn

11KlHe-x9KNf9mJhpIGd6ZNrsjYF9yNYbE2S

Điền và lưu IDE key với cùng một chuỗi duy nhất như khi bạn đăng ký IDE (Bước #2).

bắt đầu gỡ lỗi

1. Đặt (các) điểm dừng trên PhpStorm.

2. Bắt đầu nghe kết nối gỡ lỗi trong PhpStorm bằng cách nhấp vào nút ‘điện thoại’ trên thanh công cụ phía trên bên phải hoặc từ menu Run > Start Listening for PHP Debug Connectitiện ích. Điều này sẽ cho phép PhpStorm phản ứng và tự động mở cửa sổ Gỡ lỗi khi phiên gỡ lỗi bắt đầu.

Đọc thêm  Semrush PHP API - Diễn đàn freeCodeCamp
8vY-Obed-f51RvowC6kRMJM3s6bDKfDX8l-G

3. Kích hoạt trình sửa lỗi của Xdebug khi thực hiện một yêu cầu. Theo Tài liệu Xdebug có 3 cách để thực hiện việc này. Nhưng IMHO, cách tốt nhất hoạt động cho tất cả các loại phương thức HTTP là đặt cookie có tên XDEBUG_SESSION với giá trị <IDE_key> là cùng một chuỗi duy nhất khi chúng tôi đăng ký IDE của mình với proxy DBGp (Thiết lập Máy khách #2).

  • Trong trình duyệt web, cookie sẽ được đặt tự động bởi tiện ích mở rộng Trình trợ giúp Xdebug
iaIbl9VnNuiuhc2t7wy8lnAmrI-sTu7Iy4VF
  • Trong Postman, cookie có thể được đặt trong Tiêu đề yêu cầu
yz6sMh-jHy6KD3ninIJj3ftMZtkaMGJQtro1

4. Chạy tập lệnh với cookie đã được đặt.

5. Khi thành công, PhpStorm sẽ tự động hiển thị cửa sổ Gỡ lỗi.

3LS3M-zKZuX8o5rtYKGYXYX1XKPDL0aSdDJK

6. Đảm bảo bỏ đặt/không gửi cookie để tắt gỡ lỗi và ngừng nghe kết nối gỡ lỗi trong PhpStorm nếu bạn không thực hiện bất kỳ việc gỡ lỗi nào. Nếu bạn không làm như vậy, nó sẽ làm cho proxy DBGp bị treo khi có quá nhiều kết nối bị treo.

Hy vọng hướng dẫn này làm việc cho bạn.

Cảm ơn bạn đã đọc!

Người giới thiệu



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status