【发布时间】:2021-04-12 06:41:19
【问题描述】:
我想知道是否有人可以阐明要采取的适当措施,以确保以下设置允许 Xdebug 和 PhpStorm 工作。
我们有一个运行良好的 LAMP 堆栈,PHP 和 Xdebug 3 在 Azure VM 上运行。
我们在一个共享的办公室网络上,有一个公共 IP 地址,但没有访问防火墙的传入线路,虽然它很轻松。
我们的目标是连接我们的机器 (x3) 以调试我们的远程 Web 服务器(Azure VM 上的 LAMP 堆栈)。
我们可以创建到 Web 服务器的 SSH 隧道没有问题。但是调试是行不通的。 IE。当我们启动一个页面时,调试器什么都不做。
是否有其他人在运行这种设置并确认我们是否缺少确保连接成功的步骤。
[xdebug]
zend_extension=xdebug
xdebug.mode=debug
xdebug.client_host=127.0.0.1
xdebug.client_port=9003
xdebug.default_enable = 1
xdebug.force_display_errors = 1
xdebug.scream = 1
xdebug.force_error_reporting = NONE
xdebug.idekey = diss
xdebug.remote_enable = 1
xdebug.remote_log=/tmp/xdebug.log
xdebug.log=/var/log/xdebug.log
xdebug.remote_connect_back=0
xdebug.discover_client_host=false
【问题讨论】:
-
1) 是的,需要 SSH,因为您无法在防火墙/路由器上打开端口。 2)如果你要让多个开发人员同时工作......你最好看看 DBGp Proxy(我猜是结合 SSH 隧道)。 3) 不要混合 Xdebug v2 和 v3 配置参数。每次看到 v2 参数时,v3 都会在您的错误日志中抱怨(您不需要这种无用的洪水)。
-
4) Try
xdebug.start_with_request = yes-- 这告诉 Xdebug 尝试调试每个脚本/请求,而不寻找“调试我”标志(cookie 或 ENV/GET/ POST param) -- 保留它直到你让它工作,然后你可以删除它以获得更好的控制。 5)发布phpinfo()输出+xdebug_info()的Xdebug部分,以与您尝试调试它相同的方式捕获(CLI脚本或网页 - 很重要,因为您的操作系统可能对不同的环境使用不同的php.ini) -
6) 检查 Xdebug 日志——它会告诉它尝试连接到哪里以及响应是什么。如果日志为空: A) 路径错误(如果使用
/tmp/,Ubuntu 会进行虚拟化); B)文件权限 C)Xdebug 没有尝试调试任何东西 D)某些东西阻止了这种情况(例如 SELinux 或类似的东西)——不太可能在容器中发生,但仍可能影响 Apache。 7) 检查telnet是否正确设置了 SSH 隧道(从您的虚拟机/容器内连接回 IDE——PhpStorm mu 在那个阶段正在监听连接(绿色电话手柄图标)——能够连接吗? -
P.S.如果您正在调试 CLI 脚本,那么您应该能够从多个同时进行的会话中进行调试(只需在 IDE 中使用不同的 Xdebug 端口,IDE 将在从 IDE 启动 CLI 调试时传递这些参数(您必须为此配置了远程 PHP 解释器)。对于 网页调试,虽然你不能通过它(因为它都在服务器上运行而你无法控制)所以必须使用像 DBGp Proxy 这样的东西来拥有多个开发者(为此而生):jetbrains.com/help/phpstorm/…
-
@LazyOne DBGp 代理 - 我现在正在看这个。我可以在开发服务器的后台永久运行它吗?