栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

[PhpStorm+Nginx+XDebug] PHP断点调试环境构建

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[PhpStorm+Nginx+XDebug] PHP断点调试环境构建

[PhpStorm+Nginx+XDebug] PHP断点调试环境构建
  • 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)开始断点调试

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.iniPhpStorm
1xdebug.remote_hostHost
2xdebug.remote_portPort
3xdebug.idekeyIDE 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

如下图所示:

断点效果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/939852.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号