[PhpStorm+Nginx+XDebug] PHP断点调试环境构建
1、概述
搭建基于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
2、PHP配置
(1)下载php_xdebug.dll
需下载php_xdebug-3.1.4-7.4-vc15-x86_64.dll,下载完成后将其重命名为php_xdebug.dll并放入%PHP_HOME%/ext目录下:

(2)添加php.ini配置
在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=PHPSTORM
3、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中设置的端口保持一致:

(3)设置DBGp Proxy
此处的端口需与php.ini中设置的保持一致,对应关系为:
| 序号 | php.ini | PhpStorm |
|---|---|---|
| 1 | xdebug.remote_host | Host |
| 2 | xdebug.remote_port | Port |
| 3 | xdebug.idekey | IDE key |

(4)配置Servers
此处Server的配置对应Nginx中的相关配置:

5、调试
(1)启动php-cgi
1)打开cmd命令行
2)进入目录%PHP_HOME%

3)启动php-cgi
# 监听的端口为8088, 需与nginx中的fastcgi_pass保持一致
php-cgi.exe -b 127.0.0.1:8088 -c php.ini

(2)PhpStorm进行相关设置
1)进入Run/Debug Configurations

进入的界面如下:

2)新增PHP Web Page

并进行设置:

说明:Server选项选取预先配置好的debug_server
3)开启XDebug监听
点击下图所示的按钮:

按钮变为如下状态,说明已开始监听请求:

(3)开始断点调试
本例使用Postman进行接口调用,需在请求头中加入如下参数:
Cookie: XDEBUG_SESSION=PHPSTORM
如下图所示:

断点效果:


1370

被折叠的 条评论
为什么被折叠?



