【问题标题】:No incoming connection for PhpStorm with xdebug (nginx / php-fpm)没有使用 xdebug (nginx / php-fpm) 的 PhpStorm 的传入连接
【发布时间】:2014-08-29 21:08:18
【问题描述】:

我想我会尝试使用 nginx 而不是 Apache,看看它是如何工作的,我已经启动并运行了,但为了我的生活,我无法弄清楚如何让 PhpStorm 捕获传入的 xdebug 连接。当我运行 Apache 时,它​​运行良好。

通常,你会在 PhpStorm 中获得一个“传入连接”窗口——这个窗口现在会因为它的缺失而闪耀——是的;我已经阅读了 StackOverflow 上的每一个 PhpStorm / Xdebug 问题,但都没有解决我的问题。

配置: 操作系统:OSX Mavericks PhpStorm 版本:7.1 Xdebug 版本:2.2.5

请注意,我正在通过php-fpm 运行 nginx 和 PHP,它按预期工作。我已经指出与 php-fpm 相同的 PHP 文件正在运行到 PhpStorm,它成功地将 Xdebug 找到为调试器。

由于php-fpm 与 Xdebug 一样运行端口 9000,我已将其更改为 9900 和 9001(两者都尝试过)并确保检查我的 phpinfo() 以查看服务器已更新 php.ini 配置它,我已经检查过我已经更新了 PhpStorm 中的 Xdebug 端口。我还在 PhpStorm 中启用了“开始侦听调试连接”。

来自 php.ini 的 Xdebug 配置:

[xdebug]
zend_extension = /usr/local/Cellar/php55/5.5.14/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so
xdebug.auto_trace=0
xdebug.default_enable=1
xdebug.idekey="PHPSTORM"
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=0
xdebug.profiler_output_dir="/tmp"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_mode=req
xdebug.remote_port=9001

如前所述 - 当我在浏览器中加载 phpinfo() 并且我在 PhpStorm 中设置了正确的端口时,xdebug 被加载。

感谢您的帮助。

【问题讨论】:

    标签: nginx xdebug php


    【解决方案1】:

    我不能足够强调其中一句话的重要性 - “不要忘记为 xdebug 设置 cookie”。 我一切正常,因此我的调试器仍然无法连接。 我可以提出的一项建议是安装 xdebug helper chrome 扩展。一旦你有了它,从 PhpStorm 开始调试,导航到你想要调试的页面,然后通过点击地址栏中的“bug”图标打开扩展中的调试设置。

    【讨论】:

    • 还要仔细检查您的 php.ini 中是否设置了 xdebug.remote_enable = 1。他们在 PHPStorm 网站上的教程的 xdebug 设置步骤中加入了一些其他子步骤,而以下所有步骤都是超级精细的,所以如果你只看一眼那个步骤并说“是的,我已经安装了 xdebug。”
    【解决方案2】:

    当我更改设置时,我似乎错过了一件事——停下来监听断点,然后再试一次。这似乎已经解决了这个问题...

    【讨论】:

    • 您能否在答案中添加其他代码,以显示与原始有问题的代码有效(和不同)的代码?
    • 配置中没有什么不同。显然,我唯一缺少的就是停止监听连接,重新加载,然后再次开始监听连接。不要忘记为 Xdebug 设置 cookie。此外,我正在调试的文件只是一个“Hello World!”——一个用于使用 nginx 设置我的新环境的衬里。
    • 它是右上角的一个按钮,看起来像一个电话,小按钮。将其悬停时,工具提示会显示“开始侦听 PHP 调试连接”。它是工具栏“导航栏”的一部分,因此如果找不到该按钮,请在菜单中选择“查看”并确保选中“导航栏”。
    【解决方案3】:

    这是我的情况。

    • 确保已安装 xdebug。 <?php echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';
    • 确保端口未被使用,例如 nginx server:9000 <-> php-fpm:9000 ide_xdebug:9080 <-> php.ini_xdebug:9080

    【讨论】:

      【解决方案4】:

      配置xdebug.remote_host= 后,有时还需要添加选项xdebug.remote_connect_back=0。

      当 PhpStorm 抱怨“无法监听端口,端口 9000 忙”时,通常是因为其他一些应用程序使用相同的端口,例如通过 docker 暴露或端口设置,或者它本身不在 docker 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多