问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

PhpStorm下调试功能配置详解

创作时间:
作者:
@小白创作中心

PhpStorm下调试功能配置详解

引用
CSDN
1.
https://blog.csdn.net/liu9403/article/details/138131376

要在PhpStorm下实现PHP项目的调试,需要创建一个Web服务和一个PHP Web Page服务。这一步很关键,很多PHP项目调试教程都没有讲清楚这一点,只讲解了debug的相关配置。对于从Java转到PHP的开发者来说,习惯性地只开启Web服务方式(如Java IDEA只需要开启自带Web服务即可调试),会导致debug无法成功。

创建Web服务

创建Web服务器有两种方式:使用PhpStorm自带的Web服务或外部的Apache或Nginx服务。

PhpStorm自带的Web服务

创建步骤如下:

  1. 打开PhpStorm菜单,选择"运行" -> "编辑配置"
  2. 在"Run/Debug Configurations"弹窗中,点击"+"按钮,选择"PHP Built-in Web Server"
  3. 在右侧设置主机为localhost,指定一个端口,文档根路径设置为项目的public目录

Apache或Nginx服务

最简单的方式是通过PhpStudy创建。

创建PHP Web Page服务

  1. 打开PhpStorm菜单,选择"运行" -> "编辑配置"
  2. 在"Run/Debug Configurations"弹窗中,点击"+"按钮,选择"PHP Web Page"
  3. 在"Configuration"中选择一个Web服务器,如果没有则点击旁边的"..."按钮创建一个新的
  4. 确保服务器的主机和端口与上面的Web服务器保持一致
  5. 选择一个调试器,如Xdebug

配置

要实现调试,需要给PHP解析器加入Xdebug插件,并在项目中配置PHP解析器及调试侦听端口。

php.ini文件配置

  1. 下载一个与PHP版本匹配的Xdebug动态库,放到PHP程序目录下的ext目录
  2. 指定动态库路径:zend_extension
  3. 指定Web服务器地址:xdebug.remote_host
  4. 指定调试监听端口:xdebug.remote_port
  5. 开启调试:xdebug.remote_enable=1

注意:PHPStorm解析器和外部的Web服务可以使用不同版本的PHP解析器程序,但Xdebug配置只需要在Web服务用的php.ini中配置即可。

以下是Xdebug 2.7.2版本的配置示例:

[Xdebug]
zend_extension=E:/Programs/phpstudy_pro/Extensions/php/php7.3.4nts/ext/php_xdebug.dll
xdebug.collect_params=1
xdebug.collect_return=1
xdebug.auto_trace=On
xdebug.trace_output_dir=E:/Programs/phpstudy_pro/Extensions/php_log/php7.3.4nts.xdebug.trace
xdebug.profiler_enable=On
xdebug.profiler_output_dir=E:/Programs/phpstudy_pro/Extensions/php_log/php7.3.4nts.xdebug.profiler
xdebug.remote_handler=dbgp
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9001

PhpStorm配置

  1. 打开PhpStorm菜单,选择"文件" -> "配置"
  2. 在配置弹窗中选择"PHP"项,配置PHP CLI解析器,指定php.exe和php.ini路径
  3. 如果Xdebug配置成功,会在php.ini路径下方显示配置的Xdebug动态库版本号

配置项目的PHP解析器:

  1. 打开PhpStorm菜单,选择"文件" -> "配置"
  2. 在配置弹窗中选择"调试"项,配置Xdebug的调试端口,确保与php.ini中的xdebug.client_port保持一致

调试操作

  1. 开启Web服务
  2. 在debug模式下开启PHP Web Page服务
  3. 在代码位置设置断点,就可以开始调试

Postman调试接口方式

常见问题

浏览器端是否需要下载Xdebug Helper插件?

经实践验证,Xdebug Helper插件在浏览器端安装后不起作用,因此不需要安装。这个插件的原理是在Cookie中加入一个标识PHPSTORM标识。但在PhpStorm 2024.1版本中,这个标识已改为XDEBUG_SESSION。这个标识的产生是通过启动PHP Web Page服务,首次访问页面URL时自动设置到Cookie中,如首次访问地址是http://localhost/?XDEBUG_SESSION_START=12071。Cookie中XDEBUG_SESSION值即为12071。

如果发现断点无法命中,可能是XDEBUG_SESSION_START值与本次PHP Web Page服务的XDEBUG_SESSION值不匹配,重新启动PHP Web Page服务即可解决。

PhpStorm是否需要点击启动服务边上的"侦听 debug 连接"按钮?

实测可以不启用。

伪静态配置和redirect转发问题

在实际访问时,如果需要在URL中隐藏index.php,需要进行伪静态配置。如果代码中有redirect转发请求,生成的URL会自动加上.html后缀,访问时会报错。例如:

<?php
namespace app\admin\controller;
use think\Controller;
class Index  extends Controller
{
    public function index()
    {
        return redirect('account/login');
    }
}

这会导致错误:The requested URL /public/admin/login.html was not found on this server。

Apache配置

在public目录下创建文件.htaccess,加入以下配置:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# mod_fcgid & php-cgi  
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
# php5apache2_2.dll
#RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

Nginx配置

修改nginx.conf,加入以下配置:

server {
        listen 80;
        server_name localhost;
        root "E:/workspace_demo/shop/likeshop/likeshop-app/server/public";  
        index  index.php index.html index.htm;
        location / {
          root  "E:/workspace_demo/shop/likeshop/likeshop-app/server/public";
          if (!-e $request_filename) {
              rewrite ^(.*)$ /index.php?s=/$1 last;
              break;
          }
        }
        location ~ /.*\.php/ {
            rewrite ^(.*?/?)(.*\.php)(.*)$ /$2?s=$3 last;
            break;
        }
        location ~ \.php$ {
          root   "E:/workspace_demo/shop/likeshop/likeshop-app/server/public";
          fastcgi_pass   127.0.0.1:9000;
          fastcgi_index  index.php;
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
          include        fastcgi_params;
        }
    }

注意:PhpStorm自带的Web服务默认开启隐藏index.php,但目前还不知道如何配置htaccess,因此redirect转发请求报错的问题尚未解决。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号