Hướng dẫn remote debug php - gỡ lỗi từ xa php

Hướng dẫn remote debug php - gỡ lỗi từ xa php

Đã đăng vào thg 9 24, 2016 6:40 SA 4 phút đọc 4 phút đọc

Là một lập trình viên, debug là một việc không thể thiếu trong quá trình xây dựng và phát triển sản phẩm. Hôm nay mình xin trình bày với các bạn cách debug các dự án sử dụng PHP và IDE PHPSTORM. Với Sublime text các bạn có thể tham khảo thêm tại đây.

Bước 1: Cài đặt Xdebug extension

  • Kiểm tra phpinfo, nếu đã có tồn tại như hình dưới thì chuyển qua bước 2, nếu chưa có thì hãy thực hiện các thao tác dưới đây.

Hướng dẫn remote debug php - gỡ lỗi từ xa php

  • Với ubuntu (linux), các bạn chạy lệnh
sudo apt-get install php5-xdebug
Thay bằng php-xdebug với PHP 7
  • Với Window, các bạn kiểm tra xem trong thư mục ext của PHP đã có file php_xdebug.dll chưa, nếu chưa có thì bạn cẩn tải về ở đây, nhớ chọn version tương ứng nhé, và copy vào thư mục ext của PHP. Mở file php.ini lên, thêm vào cuối file nội dung sau
zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
  • 2 option cần chú ý là zend_extension_ts cấu hình đường dẫn của extension, xdebug.remote_port là cổng sẽ lắng nghe, mặc định là 9000, có thể để 10000 nếu 9000 đã có service khác sử dụng.
  • Hoàn thành các bước trên, khởi động lại web server. Kiểm tra phpinfo có kết quả như hình phía trên tức là bạn đã cài đặt thành công.

Bước 2: Cấu hình IDE PHP STORM

  • Download PHPSTORM tại đây, cài đặt và mở 1 dự án đang thực hiện.
  • Chọn File -> Settings -> Languages & Frameworks -> PHP, lựa chọn Interpreter trong box Development environment, IDE sẽ tự tìm version PHP hiện tại, nếu không thấy, các bạn tìm và trỏ đến file thực thi PHP.

Hướng dẫn remote debug php - gỡ lỗi từ xa php

  • Tiếp theo trong menu con của PHP có mục Debug, chú ý box Xdebug, điền đúng Xdebug port đã cấu hình ở file php.ini và lưu lại

Hướng dẫn remote debug php - gỡ lỗi từ xa php

  • Giờ chúng ta cần tạo cấu hình để IDE lắng nghe request từ URL. Trên thanh menu, chọn Run -> Edit Configurations, chọn +, chọn tiếp PHP remote debug, điền name là tên dự án của bạn hoặc cái gì đó dễ nhớ, tạo mới một Servers nếu chưa có

Hướng dẫn remote debug php - gỡ lỗi từ xa php

  • Tạo mới servers, chú ý đặt tên và quan trọng nhất là Host, chúng ta cần điền chính xác domain của dự án, mặc định là http://localhost, nếu các bạn dùng virtual host thì chú ý điền chính xác.

Hướng dẫn remote debug php - gỡ lỗi từ xa php

  • Tạo server xong thì điền tiếp Ide Key là PHPSTORM, chúng ta có cấu hình đầy đủ như hình dưới

Hướng dẫn remote debug php - gỡ lỗi từ xa php

  • Bước cuối dùng chúng ta cần cài add-on cho trình duyệt. Với chrome chúng ta có xdebug helper, firefox có easy Xdebug, safari có Xdebug Toogler, opera có Xdebug launcher ... Các bạn cài đặt addon, mở addon option lên và cấu hình ide key là PHPSTORM.
  • Mình sử dụng Chrome và xdebug helper, cấu hình sẽ như sau

Hướng dẫn remote debug php - gỡ lỗi từ xa php

  • Giờ bật debug của Ide lên như hình dưới, đặt vài break point nữa nhé.

Hướng dẫn remote debug php - gỡ lỗi từ xa php

  • Mở trình duyệt, nhấn chuột trái vào icon addon xdebug, chọn Debug (màu xanh) và truy cập vào dự án.
  • Kết quả

Hướng dẫn remote debug php - gỡ lỗi từ xa php

  • Các bạn có thể thực hiện chuyển trạng thái đến dòng lệnh tiếp theo hoặc kết thúc debug session... bằng các button ở khu vực quản lý debug hoặc bằng các phím tắt cấu hình trong File -> Settings -> Keymap
  • Bài viết đến đây là kết thúc, chúc các bạn sẽ tiết kiệm được nhiều thời gian để tìm lỗi với các dự án PHP .
    Hướng dẫn remote debug php - gỡ lỗi từ xa php
    .

All rights reserved

Hướng dẫn remote debug php - gỡ lỗi từ xa php

Khi code, việc gặp bug là điều không thể tránh khỏi, bug không ngán một ngôn ngữ nào. Khi project nhỏ (tự code từ đầu) hay đang code để giải bài tập thì việc debug có thể khá dễ dàng. Nhưng khi ta code một project khổng lồ với những luồng đi rất chi là loằng ngoằng thì việc debug code không hề dễ dàng. Hay trường hợp phổ biến là code trên các framework nhiều phần gặp lỗi mà ta không biết lỗi đó là của mình hay của người và để xác định được tại sao thì ta cần debug.

Trong bài, ta sẽ tìm hiểu cách debug code PHP, cài đặt PhpStorm, cài đặt công cụ debug.

Cài đặt PhpStorm

Note: Môi trường demo của mình trên linux, nếu là Windows thì hãy ánh xạ các bước sao cho đúng. 

Để tải PhpStorm vào link: https://www.jetbrains.com/phpstorm/

Phần cài đặt tham khảo link: https://vinasupport.com/phpstorm-ide-huong-dan-download-va-cai-dat/

Hoặc có thể xem video để dễ dàng hơn: https://www.youtube.com/watch?v=jT9h8qyhzcY

Cài đặt php-cli và php-cgi

Khạy PhpStorm để debug, PhpStorm sẽ tự tạo ra một server riêng và code sẽ được thực thi trên server này. Để PhpStorm server chạy được ta cần 2 thư viện là php-cliphp-cgi

Cài đặt trên linux

sudo apt install php-dev php-cli php-cgi -y

Cài CLI cho PhpStorm, sau khi cài php-cliphp-cgi ta bật PhpStorm và kiểm tra xem đã nhận php-cli chưa. Bằng cách truy cập: File -> Setting (ctr + alt + s) -> PHP & FrameWork

Hướng dẫn remote debug php - gỡ lỗi từ xa php

Nếu tại phần CLI Interpreter chưa thấy hiện gì, ta cần cài đặt nó thủ công bằng cách chọn vào ... sẽ hiển thị lên 1 cửa sổ. Chọn tiếp vào dấu + và chọn vào đường dẫn file thực thi của php-cli, nếu không thấy đường dẫn file thực thi chọn Other Local... để chọn thủ công.CLI Interpreter chưa thấy hiện gì, ta cần cài đặt nó thủ công bằng cách chọn vào ... sẽ hiển thị lên 1 cửa sổ. Chọn tiếp vào dấu + và chọn vào đường dẫn file thực thi của php-cli, nếu không thấy đường dẫn file thực thi chọn Other Local... để chọn thủ công.

Hướng dẫn remote debug php - gỡ lỗi từ xa php

Cài đặt đường dẫn xong nhấn Apply tiếp đó là OK. Sau đó ta quay lại cửa sổ trước và chọn CLI Interpreter và ta mới thêm.Apply tiếp đó là OK. Sau đó ta quay lại cửa sổ trước và chọn CLI Interpreter và ta mới thêm.

Cài đặt trình debug

Để thực hiện debug PhpStorm yêu cầu trình debuger, có 2 trình debugger được hỗ trợ: xdebug và zend debuger. Nhưng theo khuyến cáo của jetbrains thì ta nên dùng xdebug.

Cài đặt xdebug cho linux

sudo pecl install xdebug

Bật chế độ debug cho PHP ta sửa file php.ini, thêm vào đoạn dòng chữ sauphp.ini, thêm vào đoạn dòng chữ sau

[xdebug]
zend_extension="/usr/lib/php/20170718/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_connect_back=on

Nếu không biết đường dẫn file

zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
4 ta cần tìm nó

find / -name xdebug.so 2>/dev/null

Cuối cùng kiểm tra xem trình debug đã được bật chưa?

php -v

Nếu kết quả hiển thị có thông tin về debugger đã bật thì thành công, nếu không là không thành công.

Hướng dẫn remote debug php - gỡ lỗi từ xa php

Debug code PHP

Debug file PHP

Để thực hiện chức năng này ta cần đặt một breakpoint tại vị trí muốn debug. Sau đó nhấn vào icon debug hoặc nhấn tổ hợp phím Shift+F9Shift+F9

Hướng dẫn remote debug php - gỡ lỗi từ xa php
Sau khi chương trình thực thi đến phần ta đặt breakpoint nó sẽ lập tức dừng lại cho ta debug. Toàn bộ thông tin về hàm và biến được hiển thị lên.

Hướng dẫn remote debug php - gỡ lỗi từ xa php

Debug remote

Đây là phần đáng chú ý trong khi debug code PHP. Nó rất tiện lợi và dễ dàng trong việc debug khi server nhận được toàn bộ thông tin của người dùng nhập trên trình duyệt. Thông tin đó bao gồm cả POST và GET request. Để thực hiện được tính năng này ta cần thực hiện như sau:POSTGET request. Để thực hiện được tính năng này ta cần thực hiện như sau:

  1. Cài extension debug client cho trình duyệt

Hướng dẫn remote debug php - gỡ lỗi từ xa php
2. Bật lắng nghe debug server bằng cách chọn
Hướng dẫn remote debug php - gỡ lỗi từ xa php

  1. Đặt breakpoint
  2. Truy cập vào server PhpStorm

Hướng dẫn remote debug php - gỡ lỗi từ xa php
Bằng cách chọn vào biểu tượng trình duyệt muốn mở. Trang web chạy trên server PhpStorm sẽ hiện lên trên trình duyệt. Khi muốn debug tính năng nào của trong web chỉ cần click vào con bọ trên trình duyệt và thực hiện request.

Đây là một tính năng rất hay của PhpStorm trong việc debug gỡ rối chương trình. Ngoài ra PhpStorm còn nhiều tính năng thú vị nữa.

All rights reserved