【问题标题】:PhpStorm not receiving Xdebug from Vagrant machinePhpStorm 没有从 Vagrant 机器接收 Xdebug
【发布时间】:2017-03-21 11:48:35
【问题描述】:

我有一个安装了 xdebug 的 Vagrant VM,我想将它连接到 PhpStorm。

在我的xdebug.ini 我有这个:

zend_extension=xdebug.so
xdebug.remote_connect_back = 0
xdebug.idekey = "vagrant"
xdebug.remote_enable=on
xdebug.remote_host=192.168.56.1
xdebug.remote_port=9001
xdebug.remote_log=/tmp/xdebug.log

但它不起作用。我做了一些调试,并检查了我的主机中的 9001 端口是否打开,它是:

phpstorm  311 jose   41u  IPv4 0x2b62c0b107d1be65      0t0  TCP *:9001 (LISTEN)
phpstorm  311 jose   42u  IPv4 0x2b62c0b1056e5245      0t0  TCP *:10137 (LISTEN)
phpstorm  311 jose  143u  IPv4 0x2b62c0b10ae27e65      0t0  TCP 127.0.0.1:6942 (LISTEN)
phpstorm  311 jose  168u  IPv4 0x2b62c0b107cd875d      0t0  TCP *:20080 (LISTEN)
phpstorm  311 jose  342u  IPv4 0x2b62c0b110c70245      0t0  TCP 127.0.0.1:63342 (LISTEN)
JuniperSe 497 jose   10u  IPv4 0x2b62c0b10696675d      0t0  TCP 127.0.0.1:3333 (LISTEN)
VBoxHeadl 726 jose   24u  IPv4 0x2b62c0b1086e6b3d      0t0  TCP 127.0.0.1:2222 (LISTEN)
VBoxHeadl 726 jose   25u  IPv4 0x2b62c0b10fe1d435      0t0  TCP *:33060 (LISTEN)
VBoxHeadl 726 jose   26u  IPv4 0x2b62c0b108709435      0t0  TCP *:8088 (LISTEN)

但是从 Vagrant 无法访问 9001 端口:

nc -z -v -w5 192.168.56.1 9001
nc: connect to 192.168.56.1 port 9001 (tcp) timed out: Operation now in progress

这对于所有 PhpStorm 端口都是一样的。但我可以访问 8088 或 33060

nc -z -v -w5 192.168.56.1 8088
Connection to 192.168.56.1 8088 port [tcp/omniorb] succeeded!

我在 PhpStorm for xdebug 中检查了接受外部连接的选项。我使用的是 Mac OS。

【问题讨论】:

    标签: vagrant phpstorm xdebug development-environment


    【解决方案1】:

    好的,非常愚蠢的问题。我为 phpstorm 阻止了外部连接,我在 System Preferences > Security > Firewall 中更改了它,在我搜索 phpstorm 并允许外部连接的应用程序列表中

    【讨论】:

    • 你已经解决了——太好了。但无论如何,这里是我的 cmets:1) 你有 xdebug.remote_connect_back = on -- 使用此选项,xdebug.remote_host 的值将被忽略......所以没有理由同时指定它们。 2)“但我可以访问 8088 或 33060” 所以..您正在从 Vagrant 机器连接到您的主机..然后将您重定向回 Vagrant 机器(因为这些端口由 VM/Guest 提供服务操作系统)...
    • @LazyOne 实际上我仍然有问题,我正在尝试调试 php 客户端调试,它似乎根本不起作用,我运行 php 文件并且我没有收到任何内容PhpStorm
    • 禁用xdebug.remote_connect_back选项然后让它连接到预定义的IP(也许xdebug检测到错误的IP)。如果仍然相同——收集 xdebug 日志——它应该准确地告诉它尝试连接的位置以及那里发生了什么(至少你会看到连接是否成功)......这将给出进一步的提示。
    • 更新了 xdebug 配置,添加了日志,但没有创建文件。我猜每次从命令行运行 php 文件时,都应该在上面记录一些东西,不是吗?
    • 不是每次 - 只有当它看到调试请求(xdebug cookie 等)时。但是你可以设置xdebug.remote_autostart = 1,xdebug 会尝试调试每一个脚本。另请注意,可能您的 PHP 有不同的 php.ini 文件,这些文件在 CLI 模式下运行并由 Apache 运行(如果这是您用作 Web 服务器的文件)。如果您尝试通过浏览器调试网页 - 请参阅通过浏览器捕获的phpinfo() 输出的 xdebug 部分(以确认当前设置)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2023-03-12
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多