phpstorm下调试功能配置

创建WEB服务 和 PHP Web Page服务

要在phpstorm下实现调试,必须要创建一个WEB服务和一个PHP Web Page服务。这步很关键,网上很多PHP项目调试教程这点没讲清楚,只讲了debug的相关配置。导致像我这样JAVA程序员初学调试PHP项目时,习惯性在ide中只开启web服务方式(java Idea只需要开自带web服务即可调试),导致debug一直没有成功。

WEB服务

创建web服务器有2种方式,一种是使用 phpstorm自带的web服务,一种是外部的Apache或nginx服务。

phpstorm自带的web服务

创建步骤:
phpstorm菜单; 运行 ->编辑配置; 在run/Debug Configurations 弹窗,点击+,选择PHP Built-in Web Server, 在右边,填入主机localhost, 端口: 指定一个端口,文档根路径为:项目路径,选到public.
在这里插入图片描述

Apache或nginx服务

最简单的方式通过phpstudy创建。

创建一个PHP Web Page 服务

phpstorm菜单; 运行 ->编辑配置; 在run/Debug Configurations 弹窗,点击+,选择PHP Web Page, 在Configuration,Server选择一个Web server,如果没有,则点中边上的…按钮,在弹窗中创建一个。 这个server的主机和端口,需要和上面的WEB服务器保持一致。选择一个调试器。如xdebug.
在这里插入图片描述
在这里插入图片描述

配置

要实现调试,要给php解析器加入xdebug插件,以及在项目中配置php解析器及调试侦听端口。

php.ini 文件配置

  • 网上下载一个和php版本匹配的xdebug动态库,放到php程序根据下的ext目录
  • 指定动态库路径:zend_extension
  • 指定WEB服务器地址,xdebug.remote_host
  • 指定调试监听端口,xdebug.remote_port
  • 开启调试:xdebug.remote_enable=1

phpstorm解析器和外部的WEB服务可以不是同一个php解析器程序,如WEB服务用php7.2版本 和 PHP Web Page服务用7.3版,但这个debug配置只需要配置在WEB服务用的php.ini即可,PHP Web Page服务的php.ini不需要配置)。

以上配置适合Xdebug.dll 2.7.2版本。新版的Xdebug动态库remote_enable、remote_host、remote_port都已改名。

[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配置

PHP CLI解析器配置

phpstorm菜单:文件 ->配置;在配置弹窗,选择"PHP"项,配置PHP CLI解析器,指定php.exe 和php.ini路径。如果上面的xdebug配置成功,则会在php.ini路径下方debugger显示配置的xedebug动态库版本号,未正确配置,则显示为Not installed.
在这里插入图片描述

调试配置

配置项目的php解析器:
phpstorm菜单: 文件 ->配置;在配置弹窗,选择"调试"项,配置Xdebug的调试端口。这个端口必须和上面的php.ini中xdebug.client_port保持一致。
在这里插入图片描述

调试操作

  1. 开启web服务
  2. 在debug模式下开启PHP Web Page 服务。
    在这里插入图片描述在这里插入图片描述
  3. 在代码位置打断点,就可以调试。

Postman调试接口方式

在这里插入图片描述

碰到的问题

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

经实践Xdebug Helper在浏览器端安装后,不起作用不需要安装。这个插件的原理应该在Cookie中加入一个标识PHPSTORM标识。但phpstorm2024.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后缀, 访问时会报错。
    如以下代码会报:The requested URL /public/admin/login.html was not found on this server.
<?php
namespace app\admin\controller;
use think\Controller;
class Index  extends Controller
{
    public function index()
    {
        return redirect('account/login');
    }
}

Apache或nginx配置htacess,可以解决以上2个问题.
(注意:phpstorm自带web服务默认开启隐藏index.php,htacess配置目前还不知道如何配,所以未解决redirect转发请求报错问题!!!)

Apache配置

配置public目录下创建文件.htacess,加入以下配置

<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;
        }
    }
  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值