如何使用xdebug更好的調(diào)試代碼
專注于PHP、MySQL、Linux和前端開發(fā),感興趣的感謝點(diǎn)個(gè)關(guān)注喲!??!文章整理在GitHub,Gitee主要包含的技術(shù)有PHP、Redis、MySQL、JavaScript、HTML&CSS、Linux、Java、Golang、Linux和工具資源等相關(guān)理論知識(shí)、面試題和實(shí)戰(zhàn)內(nèi)容。
@author: 一只獨(dú)立特行的豬 @文檔地址:卡二條的技術(shù)圈
xdebug介紹
Xdebug是PHP的一個(gè)擴(kuò)展,方便我們調(diào)試PHP應(yīng)用程序的執(zhí)行流程信息。使用過JavaScript中的debug,應(yīng)該就能很好的理解xdebug??偨Y(jié),大致有如下的功能:
它包含一個(gè)用于IDE的調(diào)試器。 它升級(jí)了PHP的var_dump()函數(shù)。 它為通知,警告,錯(cuò)誤和異常添加了堆棧跟蹤。 它具有記錄每個(gè)函數(shù)調(diào)用和磁盤變量賦值的功能。 它包含一個(gè)分析器。 它提供了與PHPUnit一起使用的代碼覆蓋功能。
本文便針對(duì)Mac上進(jìn)行xdebug的安裝與簡(jiǎn)單調(diào)試。
環(huán)境
環(huán)境都是在Mac上運(yùn)行的,使用到了Apache、PHP。
PHP版本:7.4.20。xdebug版本:3.1.1。
安裝流程
PHP安裝
默認(rèn)的Mac是自帶PHP環(huán)境的,由于版本的需要,因此不會(huì)使用該版本。我們使用brew進(jìn)行安裝。我們使用brew搜索有哪些PHP版本。
?kert@192??/usr/local/Cellar/[email protected]/7.4.20??brew?search?php
==>?Formulae
brew-php-switcher?????php-code-sniffer??????php-cs-fixer@[email protected]???????????????phpbrew???????????????phpmd?????????????????phpstan
[email protected][email protected]???????????????phplint???????????????phpmyadmin????????????phpunit
==>?Casks
eclipse-php
我們可以看到與PHP相關(guān)的包,直接使用brew install [email protected]安裝即可。所有的操作都是一步完成。安裝完成之后,相關(guān)的配置文件,如下:
kert@192???cd?/usr/local/etc/php/7.4
kert@192??/usr/local/etc/php/7.4??ll
total?168
drwxr-xr-x??7?kert??admin????224?11?14?02:26?.
drwxr-xr-x??3?kert??admin?????96?11?13?23:42?..
drwxr-xr-x??3?kert??admin?????96?11?13?23:42?conf.d
-rw-r--r--??1?kert??admin???1361?11?13?23:42?pear.conf
-rw-r--r--??1?kert??admin???5407?11?13?23:42?php-fpm.conf
drwxr-xr-x??3?kert??admin?????96?11?13?23:42?php-fpm.d
-rw-r--r--??1?kert??admin??73231?11?14?02:31?php.ini
我們可以看到,php.ini、pear.conf等相關(guān)的配置文件。以后修改PHP的配置文件,以及php-fpm的進(jìn)程文件都是在這里進(jìn)行配置即可。下面是PHP相關(guān)的cli工具。
cd?/usr/local/Cellar/[email protected]/7.4.20/bin
kert@192??/usr/local/Cellar/[email protected]/7.4.20/bin??ll
total?78792
drwxr-xr-x??12?kert??admin???????384?11?13?23:42?.
drwxr-xr-x??16?kert??admin???????512?11?14?00:19?..
-r-xr-xr-x???1?kert??admin???????960?11?13?23:42?pear
-r-xr-xr-x???1?kert??admin???????981?11?13?23:42?peardev
-r-xr-xr-x???1?kert??admin???????894?11?13?23:42?pecl
lrwxr-xr-x???1?kert??admin?????????9??6??1?23:42?phar?->?phar.phar
-rwxr-xr-x???1?kert??admin?????14910?11?13?23:42?phar.phar
-r-xr-xr-x???1?kert??admin??13398608?11?13?23:42?php
-r-xr-xr-x???1?kert??admin??13346744?11?13?23:42?php-cgi
-r-xr-xr-x???1?kert??admin??????7095?11?13?23:42?php-config
-r-xr-xr-x???1?kert??admin??13542824?11?13?23:42?phpdbg
-r-xr-xr-x???1?kert??admin??????4575?11?13?23:42?phpize
對(duì)PHP的配置操作之后,記住一定要重啟PHP服務(wù),有時(shí)候如果沒有生效的情況,最好是重啟一下Apache(下面有寫)服務(wù)。
#?重啟服務(wù)
[email protected]
#?啟動(dòng)服務(wù)
[email protected]
#?停止服務(wù)
[email protected]
Apache安裝
同樣,Mac也是自帶Apache環(huán)境的。你可以直接使用,也可以自定安裝。但是推薦不要用Mac自帶的Apache。在使用中有下面幾個(gè)原因:
自帶的Apache要解析PHP,直接在/etc/apache2/httpd.conf配置文件中將php.so的注釋放開就行了。他默認(rèn)解析的是Mac自帶的PHP,后面想改成上面自定義的PHP版本會(huì)遇到很多問題。
自帶的Apache相關(guān)配置,很多文件會(huì)遇到權(quán)限問題,而且是read-only權(quán)限。
因此,直接使用brew安裝Apache即可。首先使用sudo apachectl -k stop命令,將自帶的Apache給禁用。操作前之后,我們就可以安裝Apache了。直接使用下面的命令安裝即可。
brew?install?nghttp2
安裝完之后,相關(guān)的配置文件都會(huì)放在下面的目錄。后期需要配置,更改下面的配置文件即可。
cd?/usr/local/etc/httpd
kert@192??/usr/local/etc/httpd??ll
total?200
drwxr-xr-x???8?kert??admin????256?11?14?02:06?.
drwxrwxr-x??17?kert??admin????544?11?14?01:35?..
drwxr-xr-x??14?kert??admin????448?11?14?01:39?extra
-rw-r--r--???1?kert??admin??21475?11?14?02:06?httpd.conf
drwxr-xr-x???6?kert??admin????192?11?14?02:14?logs
-rw-r--r--???1?kert??admin??13064?11?14?01:35?magic
-rw-r--r--???1?kert??admin??60847?11?14?01:35?mime.types
drwxr-xr-x???4?kert??admin????128?11?14?01:35?original
默認(rèn)情況是使用的8080,由于我本地8080的端口已經(jīng)被占用,因此需要修改默認(rèn)的端口地址。直接對(duì)httpd.conf文件接口。
#?打開該文件,直接搜索listen,將8080改為8088即可。
Listen?8088
#?如果你需要修改程序的根目錄,可以修改如下的配置。如果不需要,可以使用默認(rèn)的配置,后面將你的PHP代碼放到默認(rèn)配置的目錄也可以。
DocumentRoot?"/Users/kert/code/php_dnmp/www"
????Options?Indexes?FollowSymLinks
????AllowOverride?None
????Require?all?granted
#?修改權(quán)限,否則訪問服務(wù)的時(shí)候會(huì)出現(xiàn)403的錯(cuò)誤信息。
????AllowOverride?none
????Require?all?granted(將之前的deny改成granted)
開啟域名配置文件。后面我們會(huì)創(chuàng)建不同的項(xiàng)目,每一個(gè)項(xiàng)目都會(huì)配置一個(gè)域名。直接在下面的文件中進(jìn)行配置就可以了,配置示例如下:
#?首先我們要修改一下httpd.conf,加載域名配置文件。將下面的配置的注釋打開就可以了。
#?Virtual?hosts
Include?/usr/local/etc/httpd/extra/httpd-vhosts.conf
#?接下來的所有域名配置就可以在httpd-vhosts.conf中進(jìn)行操作。
[email protected]
????DocumentRoot?"/Users/kert/code/php_dnmp/www/xdebug"
????ServerName?xdebug_dev.com
????ServerAlias?xdebug_dev.com
????ErrorLog?"/usr/local/etc/httpd/logs/xdebug_dev_logs-error_log.log"
????CustomLog?"/usr/local/etc/httpd/logs/xdebug_dev_logs-access_log.log"?common
Apache的基本配置就操作完成了。接下來,重啟一下Apache服務(wù)并且在/Users/kert/code/php_dnmp/www/xdebug下面創(chuàng)建一個(gè)index.php文件,寫入如下代碼:
????phpinfo();
#?重啟Apache
brew?services?restart?httpd
#?停止Apache
brew?services?stop?httpd
#?啟動(dòng)Apache
brew?services?start?httpd
訪問http://127.0.0.1:8088/index.php,出現(xiàn)下面的界面,表示我們安裝成功了。
xdebug安裝
使用xdebug一定要注意PHP的版本,否則無法使用。xdebug官方是提供了一個(gè)檢測(cè)工具,幫助我們?nèi)绾芜x擇xdebug的版本。我們可以在終端使用php -i將輸出的內(nèi)容,填充到網(wǎng)站的文本框內(nèi),檢測(cè)之后,會(huì)自動(dòng)給出安裝的版本,以及安裝的流程。


至于xdebug的如何安裝,這里就直接省略了,和常規(guī)的PHP擴(kuò)展安裝沒有什么區(qū)別。安裝完成之后,需要在php.ini中做如下配置:
[xdebug]
zend_extension=xdebug.so
;啟用代碼自動(dòng)跟蹤
xdebug.mode?=?develop,debug,profile,trace
xdebug.profiler_append?=?0
xdebug.profiler_output_name?=?cachegrind.out.%p
xdebug.start_with_request?=?default|yes|no|trigger
xdebug.trigger_value?=?StartProfileForMe
;指定性能分析文件的存放目錄
xdebug.output_dir?="/usr/local/Cellar/[email protected]/7.4.20/log/xdebug2"
xdebug.show_local_vars=0
;配置端口和監(jiān)聽的域名
xdebug.client_host=9003
xdebug.clent_host="localhost"
這里的配置格式可能和你在網(wǎng)絡(luò)上看到的不太一樣,是因?yàn)閤debug在高版本中做了一些配置的變更,部分命令的名稱做了一些改變。具體可以參考官方介紹。這里需要注意一下,9003端口號(hào)。你可以設(shè)置為其他的端口,只需要在后面提及到的PHPstorm中保持一致即可。
PHPstorm配置
PHPstorm我使用的是2021版本,因此在界面可能有一些不太一樣。大家根據(jù)自己的情況,找到對(duì)應(yīng)的配置即可。大致的界面如下:



