一直沒(méi)用過(guò)xDebug,習(xí)慣于用echo、log調(diào)試好多年。
今日研究Laravel,了解其原理、設(shè)計(jì)模式后,依舊看不懂調(diào)用順序,所以還是裝個(gè)xDebug,用單步跟一下來(lái)進(jìn)一步了解。
一、mac系統(tǒng),直接brew安裝
Molsen$ brew install homebrew/php/php71-xdebug
安裝后提示:
To launch php-fpm on startup:
mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/php71/homebrew.mxcl.php71.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php71.plist
...
brew services start homebrew/php/php71
// 看下版本
Molsen$ php -v
PHP 7.1.11 (cli) (built: Oct 27 2017 11:00:43) ( NTS )
// 看下 php.ini 文件的位置
Molsen$ php -i | grep php.ini
Cannot load Xdebug - it was already loaded
Configuration File (php.ini) Path => /usr/local/etc/php/7.1
Loaded Configuration File => /usr/local/etc/php/7.1/php.ini
// 查看xdebug安裝目錄
Molsen$ cat /usr/local/etc/php/7.1/conf.d/ext-xdebug.ini
[xdebug]
zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"
// 編輯php.ini,增加配置
Molsen$ vim /usr/local/etc/php/7.1/php.ini
php.ini 增加以下配置
zend_extension="/usr/local/opt/php71-xdebug/xdebug.so"
xdebug.profiler_enable = on
xdebug.trace_output_dir = "/data/logs/xdebug"
xdebug.profile_output_dir = "/data/logs/xdebug"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = "localhost"
xdebug.remote_port = 9000
xdebug.idekey = "phpStorm"
保存并退出,重啟php-fpm brew services restart homebrew/php/php71
// 查看 xdebug 的php擴(kuò)展是否安裝成功
Molsen$ php -i |grep xdebug
Cannot load Xdebug - it was already loaded
/usr/local/etc/php/7.1/conf.d/ext-xdebug.ini
xdebug
xdebug support => enabled
...
// 能看到這些就是裝好了
二、VS Code 配置
- 安裝 PHP Debug 擴(kuò)展
- 左側(cè)調(diào)試按鈕 - 左側(cè)頂部調(diào)試[Listen for XDebug],設(shè)置
{
// 使用 IntelliSense 了解相關(guān)屬性。
// 懸停以查看現(xiàn)有屬性的描述。
// 欲了解更多信息,請(qǐng)?jiān)L問(wèn): https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
}
查看9000端口的監(jiān)聽情況
Molsen$ lsof -i:9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-fpm 70380 Molsen 6u IPv4 0xc7008b2dba54edf9 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 70383 Molsen 0u IPv4 0xc7008b2dba54edf9 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 70383 Molsen 3u IPv4 0xc7008b2dade35ad1 0t0 TCP localhost:cslistener->localhost:58760 (CLOSE_WAIT)
php-fpm 70383 Molsen 7u IPv6 0xc7008b2d9fe87689 0t0 TCP localhost:58761->localhost:cslistener (ESTABLISHED)
php-fpm 70384 Molsen 0u IPv4 0xc7008b2dba54edf9 0t0 TCP localhost:cslistener (LISTEN)
Code\x20H 72517 Molsen 27u IPv6 0xc7008b2d9fe87bc9 0t0 TCP *:cslistener (LISTEN)
Code\x20H 72517 Molsen 31u IPv6 0xc7008b2db38bdbc9 0t0 TCP localhost:cslistener->localhost:58761 (ESTABLISHED)
我是在配置 Visual Studio Code 多次失敗的情況下,已經(jīng)放棄了它,然后轉(zhuǎn)向配置phpstrom的時(shí)候,突然發(fā)現(xiàn)VS Code已經(jīng)可以用了。。。沒(méi)找到原因。