我正在使用PHPStorm来开发我的PHP网页。我的Apache服务器,XDebug和一个简单的Web PHP项目都可以正常工作。没问题。
但是,当我尝试使用php artisan serve
调试Laravel 5.1 Web项目时,我无法调试断点。这就像php artisan serve
使用另一台服务器......
在我的PHPStorm上,我总是看到:
等待与ide键的传入连接'(randomNumberHere)'
我已在PHPStorm中配置了所有内容(启用了远程调试,正确的端口等),而“正常”的PHP项目一切正常。
有人可以告诉我是否需要更改某些内容吗?
谢谢!
答案 0 :(得分:24)
除非您在ini文件中启用了调试,否则使用php artisan serve
进行调试不起作用。
artisan serve
将调用PHP内置Web服务器,但不会传递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服务器的运行配置。说明:
设定值:
localhost
8000
Use route script
并在Laravel项目根目录中选择server.php
。-dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1
好的并运行。
现在,PHPStorm将执行与php artisan serve
相同的命令以及其他解释器选项。实际上php artisan serve
唯一的目的是将server.php附加到PHP内置Web服务器。 server.php只是模仿Apache的mod_rewrite
功能。
更新:来自@ attila-szeremi的好提醒:确保"开始倾听PHP调试连接"已启用,如果您未使用" Debug"
运行PhpStorm配置,您需要手动执行此操作答案 1 :(得分:3)
我没有使用phpstorm,但也许我在netbeans中用于调试的解决方案将证明是有用的。
artisan serve使用与您的Web容器加载的文件不同的ini文件
通过输入
来查找php --ini
在我的ubuntu盒子上,它位于
Loaded Configuration File: /etc/php/7.0/cli/php.ini
编辑cli环境的ini,并使用您为Web容器启用它的相同配置;
示例...
[Zend]
zend_extension=/usr/lib/php/20151012/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
唯一需要注意的是,只要你配置了这个,它就会影响你使用php cli的其他东西。
附加说明
如果您希望您的调试会话始终自动启动(而不是通过URL请求参数XDEBUG_SESSION_START = name启动远程调试,例如,在调试CLI内容时),您可以将XDEBUG设置为始终使用此方法启动远程调试会话附加配置;
xdebug.remote_autostart = 1
请参阅https://xdebug.org/docs/all
通常,您需要使用特定的HTTP GET / POST变量来启动远程调试(请参阅远程调试)。当此设置设置为1时,即使GET / POST / COOKIE变量不存在,Xdebug也将始终尝试启动远程调试会话并尝试连接到客户端。
答案 2 :(得分:1)
因此,在经历了Jeffry的 在PhpStorm中的令人敬畏 后,我遇到了与OP类似的情况(在关于Xdebug和Laravel的章节中)。我正在设置断点,但PhpStorm无法根据这些点破坏执行。而且,说实话,Josh的答案在某种程度上帮助我理解了这个问题,但对我来说还不够清楚。所以,我出去通过命中和试用方法自己找到了解决方案,这是我想要分享的最终解决方案。对于一些仍在疑惑的人来说,它可能会派上用场。
首先,正如OP所说/猜测的那样,php artisan server
确实使用其他服务器。它是PHP内置的Web服务器 plus server.php 路由器文件。它使用的配置是CLI配置。尝试php --ini
查找所有包含的配置。
就我而言(Ubuntu 17.10),包含的Xdebug配置文件来自位置/etc/php/7.2/cli/conf.d/20-xdebug.ini
。我添加了第二行来启用远程xdebug,现在文件看起来像这样,共有2行:
zend_extension=xdebug.so
xdebug.remote_enable=1
现在配置PhpStorm:
Run
> Edit Configurations
并提供任何名称,或者将其保留为未命名 ...
+
并提供任何名称(例如 Laravel App )localhost
,将端口设置为8000
,将调试器设置为Xdebug
并离开任何其他复选标记未经检查!Apply
/ OK
\user
)Apply
/ OK
请记住调试器只能在实际的Web服务器启动后才能运行,这是以php artisan server
命令启动的服务器。
现在,启动Web服务器即。 php artisan serve
和PhpStorm点击Run
> Debug 'your-debug-config'
,一切都应该正常工作!
答案 3 :(得分:1)
使用XDebug 3.0现在非常容易。我如何在phpstorm中开机。
我的php.ini
配置:
zend_extension = php_xdebug-3.0.0-7.4-vc15-nts-x86_64.dll
xdebug.client_port = 9000
xdebug.mode = debug
为您的操作系统安装适当的Xdebug扩展名:https://xdebug.org/docs/install
PHPStorm中的设置(我的版本2020.2.3):
浏览器
答案 4 :(得分:0)
第1部分 运行>编辑配置
选择PHP内置Web服务器 然后设置 主机:localhost 端口:8000 //或使用的任何端口
点击确定
第2部分 安装Xdebug帮助程序Chrome扩展程序
在Chrome浏览器中,右上角应该有一个错误图标 单击它,然后选择“调试” 以便灰色的bug图标将颜色更改为绿色
现在,当您运行php artisan serve时 并设置调试检查点
并单击电话图标以“开始侦听Xdebug连接”
它应该捕获您的调试检查点
答案 5 :(得分:0)