使用xdebug与PhpStorm

4

我无法让我的PhpStorm IDE与xdebug协同工作。

我目前的设置如下:

  • PhpStorm 2017.1.4
  • MacOS Sierra 10.12.5

以下是我遵循的步骤。

我使用以下命令安装了php。我添加了postgres参数,因为我后来需要连接到PostgreSQL数据库。

brew install php71 --with-postgresql

下一步是使用以下命令安装XDebug。
brew install php71-xdebug

因此,我从文档(https://www.jetbrains.com/help/phpstorm/configuring-xdebug.html)中得出的下一步是使用以下内容编辑php.ini文件:

[Xdebug]
zend_extension="<path to php_xdebug.dll>"
xdebug.remote_enable=1
xdebug.remote_port="<the port for Xdebug to listen to>" (the default port is 9000)
xdebug.profiler_enable=1
xdebug.profiler_output_dir="<AMP home\tmp>"

关于这些字段和XDebug的一些问题。

  • 我猜想XDebug是在remote_port上运行的某种服务,PhpStorm使用它来写入数据?还是你必须指定要测试的应用程序运行的端口?
  • “profiler”是什么?输出目录可以是我选择的任何内容吗?

这是我认为应该的php.ini文件:

[xdebug]
zend_extension="/usr/local/Cellar/php71-xdebug/2.5.4/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/usr/tmp"

以上就是php.ini的所有内容。接下来我需要检查我的PhpStorm IDE的设置,具体如下:

Settings in PhpStorm 1

Settings in PhpStorm 2

Settings in PhpStorm 3

所以这是我的设置。在我的项目中,我只有一个 index.php 文件,其中包含 <?php echo phpinfo(); ?>。我只需单击 Chrome 图标,它就会直接在浏览器中打开,以检查是否存在 XDebug。我看到以下结果。

Screenshot phpinfo

我想到自己:好吧,让我们尝试一些调试。所以我将我的index.php文件更改为以下内容:

$i = 2;
$j = $i + 2;
echo $j

我在第二行设置了断点,但是当我运行它时,它从未停在断点处。需要做什么或者我的配置有误吗?


1
回答你关于XDebug在远程调试中如何连接的问题。当你的应用程序配置了XDebug并运行时,它会连接到remote_host:remote_port并将数据发送到那里。因此,PHPStorm在这里是一个监听XDebug连接的服务。 - Sergei Kasatkin
2
这个答案的第一部分解释了XDebug会话的工作方式。 - axiac
你需要在你的 .ini 文件中添加 xdebug.idekey=PHPStormxdebug.remote_mode=req,然后开始在 PHP Storm 中监听 PHP 调试连接。同时还需要从浏览器启动 Xdebug 助手。 - Edwin
谢谢@axiac,这让我更好地了解了它的工作原理。 - koala
@Edwin 感谢您提供的关于 XDebug Chrome 扩展的提示,这使得它可以正常工作。不需要包含额外的 2 行 php.ini... - koala
你的技术栈中使用了php-fpm吗?如果是,那么请更改默认端口9000。此外,你应该在某个地方有一个xdebug.log文件,可以查看其中的内容以了解发生了什么。如果你配置了xdebug.log,请务必确保apache进程(_www:_www)对其具有写权限。最后,如果你正在使用它来创建/测试restful api,请增加同时连接数的数量。 - YvesLeBorg
1个回答

0
为了使Xdebug远程调试在您的页面上工作,您需要在浏览器中设置一个cookie,告诉服务器您想要调试该页面,有许多扩展可以实现这一点,最著名的是Chrome中的Xdebug helper
我还建议您遵循这个教程Zero-configuration debugging,它非常详细和清晰。
如果您仍然有问题,我会很乐意帮助您 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接