我正在使用 PHPStorm 来开发我的 PHP 网页。所有这些都可以与我的 Apache 服务器、XDebug 和一个简单的 Web PHP 项目配合良好。没问题。
但是,当我尝试使用以下命令调试 Laravel 5.1 Web 项目时php artisan serve
,我无法调试断点。就像php artisan serve
使用另一台服务器...
在我的 PHPStorm 上,我总是看到:
等待使用 ide key '(randomNumberHere)' 的传入连接
我已经在 PHPStorm 中配置了所有内容(启用远程调试、正确端口等),并且对于“正常”PHP 项目来说一切正常。
有人可以告诉我是否需要改变一些东西吗?
Thanks!
调试使用php artisan serve
除非您在 ini 文件中启用了调试,否则不起作用。
@Bogdan 指出了原因。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 https://github.com/laravel/framework/blob/647e64800e54cddc547b0ba95b294ec6d97be4f4/src/Illuminate/Foundation/Console/ServeCommand.php#L39.
PHPStorm 中的解决方法是创建一个直接调用 PHP 内置 Web 服务器的运行配置。指示:
- 打开运行 -> 编辑配置...
- 创建新的“PHP 内置 Web 服务器”
- 设定值:
- Host:
localhost
- Port:
8000
- 文档根:选择Laravel的公共目录/目录
- Check
Use route script
并选择server.php
在 Laravel 项目根目录中。
- 口译员选项:
-dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1
- click OK and run.
现在 PHPStorm 将执行与以下相同的命令php artisan serve
具有额外的解释器选项。实际上php artisan serve
唯一的目的是将 server.php 附加到 PHP 内置 Web 服务器。 server.php 只是模拟 Apache 的mod_rewrite
功能。
更新:@attila-szeremi 的好提醒:确保启用“开始侦听 PHP 调试连接”,如果您不使用“调试”运行 PhpStorm 配置,则需要手动执行此操作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)