如何在PHPStorm中调试php artisan server?

2022-03-04 00:00:00 php laravel xdebug phpstorm

我正在使用PHPStorm开发我的PHP网页。使用我的Apache Server、XDebug和一个简单的web PHP项目都可以很好地工作。没问题。

但是,当我尝试使用php artisan serve调试Laravel 5.1Web项目时,我无法调试断点。这就像php artisan serve使用另一台服务器.

在我的PHPStorm上,我总是看到:

正在等待使用ide键"(RanomNumberHere)"的传入连接

我已经在PHPStorm中配置了所有内容(启用远程调试、正确的端口等),并且使用"普通"PHP项目都可以正常工作。

有人能告诉我是否需要更改吗?

谢谢!


解决方案

使用php artisan serve调试不起作用,除非您在INI文件中启用了调试。

@Bogdan指出了原因。artisan serve将调用PHP内置Web Server,但不传递php命令行选项(PHPStorm中命名为解释器选项)。

即如果从命令行执行:

$ php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 artisan serve

-d给出的这些选项不会传递给被称为PHP内置Web服务器。您可以看到内置服务器的调用here。

PHPStorm中的解决方法是创建直接调用PHP内置Web服务器的运行配置。使用说明:

  1. 打开运行->;编辑配置.
  2. 新建"PHP内置Web服务器"
  3. 设置值:
  • 主持人:localhost
  • 端口:8000
  • 文档根:选择Laravel的公共目录/目录
  • 选中Use route script并选择Laravel Projects根目录中的server.php
  • 解释器选项:-dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1
  1. 单击"确定"并运行。
现在,PHPStorm将执行与使用其他解释器选项的php artisan serve相同的命令。实际上,php artisan serve的唯一目的是将server.php附加到PHP内置Web服务器。server.php仅模拟Apache的mod_rewrite功能。

更新:来自@attila-szeremi的良好提醒:请确保启用了";Start Listing for PHP Debug Connections&qot;,如果您没有使用";Debug&qot;运行PhpStorm配置,则需要手动执行此操作。

相关文章