本篇文章給大家?guī)砹顺糜玫?a >phpstorm debug工具,平常在開發(fā)中,可能會有人選擇安裝xdebug擴展,在phpstorm中配置xdebug來調(diào)試,希望對大家有幫助。
平常在開發(fā)中,總會有一些需要 debug 的時候,手動打斷點 var_dump、die 等方式總是耗時耗力還不優(yōu)雅,這時候可能會有人選擇安裝 xdebug 擴展,在 phpstorm 中配置 xdebug 來調(diào)試。
但當(dāng)你需要用到 swoole 框架時,并需要調(diào)試 swoole 框架中代碼時,xdebug 是不能用在 swoole 上的,是和 swoole 有沖突的。
然后我發(fā)現(xiàn)了一款比較好用的,可以兼容 fpm 框架,和 swoole 框架的 debug 調(diào)試工具,yasd.
立即學(xué)習(xí)“PHP免費學(xué)習(xí)筆記(深入)”;
安裝
1. Mac 上安裝 boots 庫
brew?install?boost
2. 從 Github 上下載 yasd 源碼
git?clone?https://github.com/swoole/yasd.git
3. 編譯安裝 yasd
cd?yasd phpize?--clean?&&? phpize?&&? ./configure?&&? make?clean?&&? make?&&? make?install
4. 修改 php.ini
zend_extension="yasd.so" ;命令行調(diào)試 ;yasd.debug_mode=cmd ;遠程調(diào)試 yasd.debug_mode=remote ;本地開發(fā)地址 yasd.remote_host=127.0.0.1 ;本地開發(fā)監(jiān)聽端口 yasd.remote_port=9000
查看擴展信息
???yasd?php?--ri?yasd yasd Yasd?=>?enabled Author?=>?codinghuang?<codinghuang> Version?=>?0.3.9-alpha Built?=>?Jan?15?2022?14:09:47 Directive?=>?Local?Value?=>?Master?Value yasd.breakpoints_file?=>?no?value?=>?no?value yasd.debug_mode?=>?remote?=>?remote yasd.remote_host?=>?127.0.0.1?=>?127.0.0.1 yasd.remote_port?=>?9000?=>?9000 yasd.depth?=>?1?=>?1 yasd.log_level?=>?-1?=>?-1 yasd.max_executed_opline_num?=>?0?=>?0 yasd.init_file?=>?no?value?=>?no?value yasd.open_extended_info?=>?0?=>?0 xdebug.coverage_enable?=>?1?=>?1 xdebug.profiler_enable?=>?1?=>?1 xdebug.remote_autostart?=>?1?=>?1 xdebug.remote_connect_back?=>?0?=>?0 xdebug.remote_mode?=>?req?=>?req xdebug.idekey?=>?hantaohuang?=>?hantaohuang</codinghuang>
5. 調(diào)試腳本
使用 yasd 調(diào)試腳本,必須要添加 -e 的 php 參數(shù),例如這樣
#?調(diào)試普通php腳本 php?-e?test.php #?調(diào)試?laravel?的?command php?-e?artisan?test #?調(diào)試?hyperf?框架 php?-e?bin/hyperf?start
配置 phpstorm
1. 配置 phpstorm 監(jiān)聽 9000 端口
2. 點擊 phpstorm 右上角的電話圖標(biāo)啟動監(jiān)聽
3. 測試 debug 調(diào)試
在 Laravel 中隨便寫一個 test command
php?-e?artisan?test
到這里就已經(jīng)成功了
調(diào)試 Hyperf 框架
上面說了在 fpm 中調(diào)試,接下來說一下在 Hyperf 框架中如何調(diào)試
需要注意的幾點
1、在 Hyperf 中使用需要將 config.php 中的 scan_cacheable 參數(shù)設(shè)置為 true,該參數(shù)為是否掃描代理類,若設(shè)置為 true,則每次啟動都會直接掃描緩存代理類,而不是重新掃描在生成代理類。
設(shè)置為 true 后需要注意,每次修改代碼需要手動生成代理類,composer dump-autoload -o,然后在啟動。
或者直接在代理類中修改代碼,當(dāng) debug 結(jié)束后,再將代理類中的代碼復(fù)制到真實類中。
代理類生成路徑在 runtime/container/proxy
2、在 Hyperf 框架中如果使用到了 Swoole Server,需要將 worker_num 設(shè)置為 1 否則斷點可能不會生效。該參數(shù)在 server.php 中。
剩下的調(diào)試就和上面講的沒什么區(qū)別了。
推薦學(xué)習(xí):《phpstorm教程》