Mọi dự án DDEV đều được cấu hình tự động với Xdebug để các IDE phổ biến có thể thực hiện từng bước gỡ lỗi mã PHP
Xdebug là một công cụ phía máy chủ và nó được cài đặt tự động trong vùng chứa, do đó bạn không phải cài đặt hoặc định cấu hình nó trên máy trạm của mình. Xdebug bị tắt theo mặc định vì lý do hiệu suất, vì vậy bạn sẽ cần bật nó và định cấu hình IDE của mình trước khi có thể bắt đầu gỡ lỗi
Tất cả các IDE về cơ bản đều hoạt động giống nhau, lắng nghe trên một cổng và phản ứng khi chúng được liên lạc ở đó. Các IDE khác với những IDE được liệt kê ở đây hoạt động tốt, nếu chúng lắng nghe trên cổng mặc định của Xdebug là 9003
Mẹo
Đây là cổng 9000 đến DDEV v1. 18, đã thay đổi trong v1. 19+ đến cổng 9003
Sự kiện chính
- Kích hoạt Xdebug bằng cách chạy hoặc
ddev xdebug on
từ thư mục dự án của bạn
Nó sẽ vẫn được kích hoạt cho đến khi bạn bắt đầu hoặc khởi động lại dự án - Vô hiệu hóa Xdebug để có hiệu suất tốt hơn khi không gỡ lỗi bằng
ddev xdebug off
ddev xdebug status
sẽ hiển thị trạng thái hiện tại của Xdebug- Cổng máy chủ gỡ lỗi của IDE phải được đặt thành 9003 mặc định của Xdebug, điều này có thể đã xảy ra trong các IDE phổ biến. Nếu trường hợp bất thường mà bạn bị xung đột port thì xem bên dưới
- Trong trường hợp sử dụng chạy IDE của bạn bên trong WSL2 [sử dụng WSLg] hoặc với thiết lập proxy như JetBrains Gateway, bạn có thể đặt điều đó bằng
ddev config global --xdebug-ide-location=wsl2
. Nếu bạn đang chạy IDE của mình bằng proxy bên trong bộ chứa web, bạn có thể đặt proxy đó bằng `ddev config global –xdebug-ide-location=container
Để biết thêm thông tin cơ bản về Xdebug, hãy xem tài liệu Xdebug. Ý định ở đây là người ta sẽ không cần phải hiểu Xdebug để gỡ lỗi
Thiết lập IDE
Thiết lập gỡ lỗi PhpStorm
PhpStorm là một IDE phát triển PHP hàng đầu với hỗ trợ sửa lỗi tích hợp sẵn rộng rãi. Nó cung cấp hai cách để gỡ lỗi. Gỡ lỗi “không cấu hình” đòi hỏi rất ít nỗ lực trong PhpStorm IDE và một “cấu hình chạy” mà bạn có thể thiết lập giống như Netbeans hoặc Eclipse
Nếu bạn đang sử dụng PhpStorm bên trong WSL2 hoặc Linux
Làm cho PhpStorm lắng nghe Xdebug bằng IPv4 bằng cách truy cập Trợ giúp → Chỉnh sửa tùy chọn VM tùy chỉnh và thêm một dòng bổ sung. -Djava.net.preferIPv4Stack=true
. Phiên bản Linux của PhpStorm dường như mặc định chỉ sử dụng IPv6
Nếu sử dụng PhpStorm bên trong WSL2 hoặc với JetBrains Gateway
Làm cho PhpStorm nghe đúng địa chỉ IP với ddev config global --xdebug-ide-location=wsl2
PhpStorm Gỡ lỗi cấu hình không
Gỡ lỗi không cấu hình PhpStorm sẽ tự động phát hiện kết nối và đề nghị tạo một “máy chủ” ánh xạ các tệp máy trạm của bạn tới vùng chứa. Điều này có nghĩa là bạn chỉ phải
- Chuyển đổi nút “Bắt đầu nghe các kết nối gỡ lỗi PHP”
- Đặt điểm ngắt
- Truy cập một trang sẽ dừng ở điểm ngắt mà bạn đã đặt
- PhpStorm sẽ hỏi bạn sử dụng ánh xạ nào để nó có thể tìm ra cách ánh xạ đường dẫn bên trong vùng chứa tới đường dẫn trên máy trạm của bạn. Lần đầu tiên bạn thực hiện việc này với một dự án, PhpStorm sẽ bật lên hộp thoại “máy chủ” để thiết lập ánh xạ. Mặc định sẽ hoạt động, nhưng tốt nhất là nhấp vào hộp kiểm để ánh xạ toàn bộ thư mục dự án tới
/var/www/html
Khi sử dụng tùy chọn không cấu hình này
- Sử dụng phiên bản DDEV mới nhất
- Trong Chạy → Chỉnh sửa cấu hình, hãy kiểm tra xem không có máy chủ nào đã được xác định. PhpStorm sẽ tạo một máy chủ mới cho bạn nếu không có máy chủ nào khác tồn tại. Bạn có thể xóa tất cả các máy chủ và yêu cầu PhpStorm tạo một máy chủ mới hoặc bạn có thể tạo/chỉnh sửa một máy chủ hiện có như được thảo luận bên dưới
PhpStorm “Run/Debug Configuration” Gỡ lỗi
Cấu hình chạy/gỡ lỗi PhpStorm yêu cầu thiết lập nhiều hơn nhưng có thể dễ dàng và linh hoạt hơn đối với một số người
- Trong menu Run, chọn Chỉnh sửa cấu hình
- Nhấp vào + ở phía trên bên trái và chọn Ứng dụng web PHP để tạo cấu hình
Đặt cho nó một cái tên hợp lý - Tạo một “máy chủ” cho dự án. Đảm bảo Tên giống hệt với máy chủ lưu trữ của bạn [e. g. ________số 8_______].
- Thêm ánh xạ tệp cho các tệp trên máy chủ
Nhấp vào đường dẫn kho lưu trữ cục bộ và thêm/var/www/html
làm đường dẫn Tuyệt đối trên máy chủ và gốc kho lưu trữ của bạn làm đường dẫn trên máy chủ - Đặt điểm ngắt thích hợp
- Bắt đầu gỡ lỗi bằng cách nhấp vào nút "gỡ lỗi", thao tác này sẽ khởi chạy một trang trong trình duyệt của bạn.
Gỡ lỗi PhpStorm và dòng lệnh
Nếu bạn cần gỡ lỗi các quy trình PHP dòng lệnh, đặc biệt là mã nằm ngoài docroot, thì biến môi trường ddev xdebug
1 đã được đặt bên trong bộ chứa web, vì vậy bạn không cần phải làm gì thêm
Tuy nhiên, nếu bạn chưa sử dụng PhpStorm với Xdebug cho yêu cầu web thông thường, hãy làm điều đó để tự động tạo “máy chủ” PhpStorm có cùng tên với URL chính của bạn [Ngôn ngữ và Khung → PHP → Máy chủ]. Công việc chính của máy chủ là ánh xạ các vị trí hệ thống tệp trên máy trạm [máy tính của bạn] tới các vị trí hệ thống tệp trên máy chủ từ xa—trong trường hợp này là bộ chứa ddev xdebug
2. Thông thường, PhpStorm tự động thiết lập ánh xạ không bao gồm toàn bộ dự án, nghĩa là những thứ như thư mục ddev xdebug
3 có thể không được ánh xạ. Bạn có thể khắc phục điều này bằng cách ánh xạ thư mục cấp cao nhất của dự án của bạn tới /var/www/html
trong vùng chứa.
Thiết lập gỡ lỗi Visual Studio Code [VS Code]
- Cài đặt tiện ích mở rộng Gỡ lỗi PHP
- Cập nhật
ddev xdebug
5 của dự án để thêm cấu hình “Nghe cho Xdebug” từ đoạn mã cấu hình này. Để biết thêm về cách tùy chỉnhddev xdebug
6, hãy xem - Đặt điểm ngắt trong
ddev xdebug
7 của bạn. Nếu nó không có màu đỏ đặc, hãy khởi động lại - Trong menu, chọn Chạy → Bắt đầu gỡ lỗi. Bạn có thể phải chọn “Nghe Xdebug” bằng đầu mũi tên màu xanh lục ở trên cùng bên trái. Khung dưới cùng của Mã VS bây giờ sẽ có màu cam [trực tiếp] và sẽ nói “Nghe cho Xdebug”
- Kích hoạt Xdebug với
ddev xdebug on
- Trong trình duyệt, hãy truy cập dự án của bạn và xác nhận rằng bạn đã đạt đến điểm dừng
Nếu bạn đang sử dụng Mã VS trên Windows với WSL2
Mã VS sẽ đề xuất hai tiện ích mở rộng nếu bạn đã bật WSL2 cùng với dự án PHP. “Gỡ lỗi PHP” và “Từ xa - WSL”. Bạn sẽ cần bật cả hai tiện ích mở rộng này trong bản phân phối của mình [e. g. Ubuntu]
Sử dụng Xdebug trên một cổng khác với 9003 mặc định
Theo mặc định, DDEV được thiết lập để kết nối với cổng mặc định, cổng 9003 trên IDE của bạn. Tuy nhiên, nếu bạn có thứ gì khác đang nghe trên cổng đó hoặc IDE của bạn chưa mặc định là 9003, bạn sẽ cần thay đổi cổng. [PhpStorm và VS Code đã chuyển sang hỗ trợ 9003 thay vì 9000 một thời gian rồi. ]
Để ghi đè lên cổng, hãy thêm tệp ghi đè vào dự án
ddev xdebug
9. Ví dụ: tệpddev xdebug on
0 sẽ thay đổi để sử dụng cổng kế thừa 9000[PHP] xdebug.client_port=9000
Sau đó thay đổi cấu hình IDE của bạn để nghe trên cổng mới
Mẹo
Nếu bạn đang sử dụng phiên bản PHP dưới 7. 2, bạn sẽ sử dụng Xdebug phiên bản 2. x thay vì 3. x và cấu hình cổng của bạn phải là ddev xdebug on
1 thay vào đó
Khắc phục sự cố Xdebug
Điều cơ bản cần hiểu về Xdebug là nó là một giao thức mạng. IDE của bạn [như PhpStorm] sẽ lắng nghe trên cổng Xdebug [9003 theo mặc định trong v1. 19+, trước đây là 9000]. Nếu Xdebug được bật trong bộ chứa web DDEV [ddev xdebug on
], PHP bên trong bộ chứa đó sẽ cố gắng mở kết nối TCP tới IDE. Mạng của Docker đặt IDE lắng nghe phía máy chủ tại ddev xdebug on
3, vì vậy bạn phải đảm bảo rằng kết nối mạng rõ ràng và có thể được thực hiện cũng như mọi thứ sẽ hoạt động
Dưới đây là các bước cơ bản cần thực hiện để giải quyết mọi khó khăn
- Nhớ port đang chơi là port 9003
- Khởi động lại máy tính của bạn
- Nếu bạn đang chạy WSL2 và có PhpStorm chạy bên trong WSL2 [phiên bản Linux của PhpStorm] thì
ddev config global --xdebug-ide-location=wsl2
- Tạm thời vô hiệu hóa mọi tường lửa hoặc VPN nếu bạn gặp sự cố. Xdebug là một giao thức mạng và quy trình PHP bên trong bộ chứa web phải có khả năng thiết lập kết nối TCP với IDE đang nghe [ví dụ: PhpStorm]
- Sử dụng
ddev xdebug on
để bật Xdebug khi bạn muốn vàddev xdebug off
khi bạn hoàn tất - Đặt điểm ngắt ở dòng thực thi đầu tiên của
ddev xdebug
7 của bạn - Nói với IDE của bạn để bắt đầu lắng nghe. [ PhpStorm. nhấp vào nút điện thoại, Mã VS. chạy trình gỡ lỗi. ]
- Sử dụng
ddev xdebug on
8 hoặc trình duyệt để tạo yêu cầu web. Ví dụ,ddev xdebug on
9 Nếu IDE không phản hồi, hãy xem
ddev xdebug off
0. Một thông báo như thế này có nghĩa là Xdebug bên trong vùng chứa không thể tạo kết nối tới cổng 9003tin nhắn PHP. Xdebug. [Gỡ lỗi từng bước] Không thể kết nối với ứng dụng gỡ lỗi. Đã thử. chủ nhà. người đóng tàu. nội bộ. 9003 [thông qua xdebug. client_host/xdebug. client_port]
ddev xdebug off
1 vào vùng chứa web. Bạn có thể chạyddev xdebug off
2 và kết nối nó không? . Vô hiệu hóa nó hoặc thêm quy tắc cho phép kết nối đi qua. Ví dụ: trên Debian/Ubuntu sẽ làddev xdebug off
3Làm cách nào để bật chế độ gỡ lỗi PHP?
Bạn có thể bao gồm các dòng sau trong tệp bạn muốn gỡ lỗi. error_reporting[E_ALL]; . ini, điều này chỉ làm cho PHP báo cáo lỗi vào nhật kýLàm cách nào để thêm cấu hình trong PhpStorm?
Thêm cấu hình Chạy/Gỡ lỗi vào cửa sổ Dịch vụ .Chọn Xem. Cửa sổ công cụ. Dịch vụ từ menu chính hoặc nhấn Alt+8Trong cửa sổ công cụ Services, nhấn Add service, sau đó chọn Run Configuration TypeChọn một loại cấu hình chạy/gỡ lỗi từ danh sách để thêm tất cả các cấu hình của loại này vào cửa sổLàm cách nào để sử dụng các điểm ngắt trong PhpStorm?
Từ menu chính, chọn Chạy. Xem Điểm ngắt hoặc nhấn Ctrl+Shift+F8. Từ danh sách, chọn PHP Exception Breakpoints. Trong hộp thoại Thêm điểm ngắt ngoại lệ mở ra, hãy chỉ định các lỗi hoặc ngoại lệ mà bạn muốn trình gỡ lỗi tạm dừngLàm cách nào để gỡ lỗi mã PHP trên máy chủ?
Tạo cấu hình máy chủ gỡ lỗi PHP .Trong hộp thoại Cài đặt [ Ctrl+Alt+S ], đi tới PHP. May chủ. .Chỉ định tên cấu hình máy chủ gỡ lỗiChỉ định máy chủ nơi ứng dụng được chạy và cổng để truy cập nóTừ danh sách Trình gỡ lỗi, chọn công cụ gỡ lỗi để sử dụng