วิธีการติดตั้ง PHP + Xdebug เพื่อให้สามารถ debug บน VSCode ได้
การเขียนโปรแกรมภาษา PHP นั้น developer จำเป็นจะต้องติดตั้ง PHP พร้อมกับ
extension สำหรับ debug เอง เพื่อให้สามารถ debug โปรแกรมได้ ต่างจากภาษาอื่นๆ
ที่มักจะ bundle มากับ IDE เลย แต่กับ PHP ถึงแม้จะเป็น IDE เจ้าใหญ่ ๆ ก็ยังไม่เห็นเจ้าไหน integrate มาให้พร้อมใช้เลย
ติดตั้ง PHP
- install ผ่าน homebrew
% brew install [email protected]
- กำหนด PHP Home
% echo 'export PHP_HOME="/usr/local/opt/[email protected]/bin"' >> ~/.zshrc
- กำหนด PHP Home (สำหรับ macos Monterey ขึ้นไป ***)
% echo 'export PHP_HOME="/opt/homebrew/Cellar/[email protected]/7.4.27/bin"' >> ~/.zshr
- set PATH ให้รู้จัก php
% echo 'export PATH="$PHP_HOME:$PATH"' >> ~/.zshrc
% source ~/.zshrc
ติดตั้ง Xdebug
- install xdebug ด้วย pecl
% pecl install xdebug
- ซึ่งคำสั่งด้านบนจะลง xdebug และ config กับ php ของเราให้เลย แต่เราจะแก้ไขมันนิดหน่อยที่ไฟล์ php.ini
% nano /usr/local/etc/php/7.4/php.ini
- สำหรับ macos Monterey ขึ้นไป ***
% nano /opt/homebrew/etc/php/7.4/php.ini
- สังเกตว่าบรรทัดบนสุดจะมีการกำหนดให้ใช้ xdebug แล้ว
zend_extension="xdebug.so"
- ให้เพิ่ม debug mode เข้าไป
* Xdebug v3.x.x
** Xdebug โดยปกติจะใช้ port 9003 ถ้าไม่สามารถใช้ได้ต้องตั้งต่าเพิ่มเติม >> xdebug.client_port
xdebug.mode=debug
- ตรวจสอบ php และ xdebug
% php -v PHP 7.4.22 (cli) (built: Jul 29 2021 17:27:21) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Xdebug v3.0.4, Copyright (c) 2002-2021, by Derick Rethans with Zend OPcache v7.4.22, Copyright (c), by Zend Technologies
ยังไม่จบ !!
เราต้อง listen port debug ด้วย
- ใครยังไม่มี Visual Studio Code ไปโหลดมาซะ (ฟรี)
- ติดตั้ง Plugin ชื่อ PHP Debug (อันที่คนโหลดเยอะสุด)
- เลือกเมนูที่มีรูปแมลงบนปุ่ม play จากนั้นกด create a launch.json file และเลือก PHP
- หลังจากนั้นหน้าจอจะเปลี่ยนไป โดยไฟล์ launch.json
ที่ถูกสร้างมาก็ไม่ได้ต้องแก้อะไร
** Xdebug โดยปกติจะใช้ port 9003 ถ้าไม่สามารถใช้ได้ต้องแก้ไข port ด้วย >> vscode-php-debug
- ถ้าเป็นเว็บที่ต้องเล่นผ่าน web browser ต้องติดตั้ง extension เพิ่มเติมด้วย และอย่าลืมเปิดใช้งาน !
- จากนั้นสามารถจิ้ม Breakpoint เพื่อ debug ตามจุดต่าง ๆ ได้เลย
จบจ้า.... ลุยโค้ดต่อได้ :D