Làm cách nào để thiết lập PhpStorm để gỡ lỗi?

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

  1. Chuyển đổi nút “Bắt đầu nghe các kết nối gỡ lỗi PHP”
  2. Đặt điểm ngắt
  3. Truy cập một trang sẽ dừng ở điểm ngắt mà bạn đã đặt
  4. 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

  1. Sử dụng phiên bản DDEV mới nhất
  2. 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

  1. Trong menu Run, chọn Chỉnh sửa cấu hình
  2. 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ý
  3. 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_______].
  4. 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ủ
  5. Đặt điểm ngắt thích hợp
  6. 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 xdebug1 đã đượ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 xdebug2. 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 xdebug3 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]

  1. Cài đặt tiện ích mở rộng Gỡ lỗi PHP
  2. Cập nhật ddev xdebug5 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ỉnh ddev xdebug6, hãy xem
  3. Đặt điểm ngắt trong ddev xdebug7 của bạn. Nếu nó không có màu đỏ đặc, hãy khởi động lại
  4. 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”
  5. Kích hoạt Xdebug với ddev xdebug on
  6. 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 xdebug9. Ví dụ: tệp ddev xdebug on0 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 on1 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 on3, 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 xdebug7 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 on8 hoặc trình duyệt để tạo yêu cầu web. Ví dụ, ddev xdebug on9
  • Nếu IDE không phản hồi, hãy xem ddev xdebug off0. 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 9003

    tin 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 off1 vào vùng chứa web. Bạn có thể chạy ddev xdebug off2 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 off3

    Là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+8
    Trong cửa sổ công cụ Services, nhấn Add service, sau đó chọn Run Configuration Type
    Chọ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ừng

    Là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ỗi
    Chỉ đị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

Chủ Đề