使用PHPStorm调试CakePHP

使用PHPStorm调试CakePHP,cakephp,phpstorm,Cakephp,Phpstorm,我有一个CakePHP应用程序在Docker容器中运行。htdocs文件夹被映射到我的主机中的一个文件夹,在那里我使用Eclipse进行开发。我对Eclipse很满意,但我想看看PHPStorm 我的问题是我不能用PHPStorm调试我的项目。我花了数小时尝试不同的配置和阅读文档,但没有一个有效。PHPStorm捕获XDebug请求,但它要求我将请求映射到项目的特定文件(index.php)。我是否必须将每个请求与文件匹配?我想不会,因为CakePHP路由不是那样工作的。。。我在Eclipse中

我有一个CakePHP应用程序在Docker容器中运行。htdocs文件夹被映射到我的主机中的一个文件夹,在那里我使用Eclipse进行开发。我对Eclipse很满意,但我想看看PHPStorm

我的问题是我不能用PHPStorm调试我的项目。我花了数小时尝试不同的配置和阅读文档,但没有一个有效。PHPStorm捕获XDebug请求,但它要求我将请求映射到项目的特定文件(index.php)。我是否必须将每个请求与文件匹配?我想不会,因为CakePHP路由不是那样工作的。。。我在Eclipse中对此不需要做任何事情,我可以用一个非常简单的配置来完成这一切

下面是PHPStorm在删除所有服务器后使用ZeroConf捕获请求

我映射所选的一个,即调度程序。test.cuvibox.com在
/etc/host
中映射到127.0.0.1,我的意思是,docker正在我的笔记本电脑中运行,并公开了我使用该URL访问的web服务器。在这之后,因为我在第一线有一个强力突破。。。它停止,调试会话开始

我在CakePHP控制器上设置了一个断点,但有一个错误。文件路径未映射。这就是问题所在

这是它在如上所述映射index.php之后使用zero conf创建的服务器配置

我已将我的项目文件夹
cuvibox
映射到远程服务器完整路径
/app/cuvibox
。断点中的标记更改为OK,但无论如何,调试会话将在第一行停止,并忽略我的断点


注意:经过大量测试,我已经将XDebug移动到9050端口,但这不是问题所在。

哦,meeehh!!!这太奇怪了,不可能是真的。。。。我花了几乎一整天的时间尝试用PHPStorm进行调试,现在我意识到发生了什么:

我将断点放在AccountsController中,但我正在访问EmployeesController的URL。现在我已经让它工作了,不再需要做更多的事情,将项目的本地主页的路径映射到远程服务器中的路径。现在它在断点处停止,但也在dispatcher脚本的第一行中停止。我已取消选中“在第一行停止”选项,但我将尝试自己解决另一个问题

谢谢@LazyOne,并为此找借口。。。希望这对某人有用。。。如果不起作用,请仔细检查您正在测试的断点是否应该执行:)

编辑:取消选中“运行”菜单中的相应选项,解决了第一行中断问题


1)无需映射每个文件——映射根文件夹就足够了(所有文件和子文件夹都将继承映射详细信息)。虽然使用符号链接的单独文件/文件夹可能需要映射(请记住:xdebug仅在IDE按原样使用最终/解析路径时才使用)。2)这与“CakePHP路由”(或任何其他框架路由)无关。只有文件。xdebug处理文件——它不关心您使用什么框架。IDE.3也一样)“但是它要求我将请求映射到我的项目的一个特定文件(index.php)。我必须将每个请求匹配到一个文件吗?”如果你再看一下这个屏幕。。您将看到它与URL或其他请求方面无关——它要求您将远程文件映射到本地文件。OK。假设我将请求映射到
webroot/index.php
,即CakePHP的调度程序。我已经建立了一些断点,但它并没有停止。我还将远程服务器(docker)中的文件夹
/app/myproject
映射到
myhost/myproject
,但没有结果。我想我离它很近了,因为调试器听到了请求,但它没有在断点处停止,我认为这是关于映射的问题,但不知道如何解决它@LazyOne1)删除
Settings/Preferences | Languages&Frameworks | PHP | server
2)尝试调试(使用--via phone handle图标)3)IDE应截获传入的调试请求,并显示一个屏幕,在该屏幕上它将询问应该映射到哪个脚本——制作屏幕截图并将其发布在此处4)选择正确的映射并尝试调试5)如果仍然没有,则显示上述“PHP |服务器”屏幕的屏幕截图,所有细节都可见