- 1、概述
- 1.1、环境说明
- 2、PHP配置
- (1)下载php_xdebug.dll
- (2)添加php.ini配置
- 3、Nginx配置
- 4、PhpStorm配置
- (1)Ctrl + Alt + S 进入设置界面:
- (2)设置XDebug的监听端口
- (3)设置DBGp Proxy
- (4)配置Servers
- 5、调试
- (1)启动php-cgi
- 1)打开`cmd`命令行
- 2)进入目录`%PHP_HOME%`
- 3)启动`php-cgi`
- (2)PhpStorm进行相关设置
- 1)进入`Run/Debug Configurations`
- 2)新增`PHP Web Page`
- 3)开启`XDebug`监听
- (3)开始断点调试
搭建基于PhpStorm+XDebug的开发环境,以便于代码调试。
1.1、环境说明-
操作系统
Windows 10 -
PHP
Download: PHP For Windows: Binaries and sources Releases
php-7.4.28-nts-Win32-vc15-x64 -
PhpStorm
PhpStorm 2021.1.4 -
XDebug
Download: https://xdebug.org/download
php_xdebug-3.1.4-7.4-vc15-x86_64.dll -
Nginx
Download: nginx: download
nginx-1.20.2
需下载php_xdebug-3.1.4-7.4-vc15-x86_64.dll,下载完成后将其重命名为php_xdebug.dll并放入%PHP_HOME%/ext目录下:
在php.ini中加入如下配置:
[xdebug] zend_extension=php_xdebug.dll xdebug.mode=debug xdebug.remote_enable=On xdebug.remote_handler=dbgp # xdebug的地址及端口号 xdebug.remote_host=localhost xdebug.remote_port=9001 # idekey: 在PhpStorm的配置中使用到 xdebug.idekey=PHPSTORM3、Nginx配置
nginx需配合php-cgi一起使用,对应的配置文件fastcgi.conf如下(fastcgi.conf保持不变即可):
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REQUEST_SCHEME $scheme; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect #fastcgi_param REDIRECT_STATUS 200;
nginx.conf配置如下:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 1800s;
# 设置超时时间为30分钟, 避免调试时间过长造成504
fastcgi_send_timeout 1800s;
fastcgi_read_timeout 1800s;
server {
listen 8001;
server_name localhost;
location / {
# 该项目的根路径为E:/Path-To-Project,
# 由于项目使用了lumen框架,因此需将root指向public目录
root E:/Path-To-Project/public;
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$query_string;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ .php$ {
root E:/Path-To-Project/public;
# 此处对应php-cgi监听的地址及端口
fastcgi_pass 127.0.0.1:8088;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME E:/Path-To-Project/public$fastcgi_script_name;
include fastcgi_params;
}
}
}
4、PhpStorm配置
(1)Ctrl + Alt + S 进入设置界面:
(2)设置XDebug的监听端口
此处的端口需与php.ini中设置的端口保持一致:
此处的端口需与php.ini中设置的保持一致,对应关系为:
| 序号 | php.ini | PhpStorm |
|---|---|---|
| 1 | xdebug.remote_host | Host |
| 2 | xdebug.remote_port | Port |
| 3 | xdebug.idekey | IDE key |
此处Server的配置对应Nginx中的相关配置:
# 监听的端口为8088, 需与nginx中的fastcgi_pass保持一致 php-cgi.exe -b 127.0.0.1:8088 -c php.ini(2)PhpStorm进行相关设置 1)进入Run/Debug Configurations
进入的界面如下:
并进行设置:
说明:Server选项选取预先配置好的debug_server
3)开启XDebug监听点击下图所示的按钮:
按钮变为如下状态,说明已开始监听请求:
本例使用Postman进行接口调用,需在请求头中加入如下参数:
Cookie: XDEBUG_SESSION=PHPSTORM
如下图所示:
断点效果:


![[PhpStorm+Nginx+XDebug] PHP断点调试环境构建 [PhpStorm+Nginx+XDebug] PHP断点调试环境构建](http://www.mshxw.com/aiimages/31/939852.png)
