Visual Studio Code PHP Debug不会在Docker项目的断点处停止

时间:2018-10-16 11:17:26

标签: php docker visual-studio-code xdebug vscode-debugger

我无法使VS Code扩展“ Php debug”在任何断点处停止。我正在Ubuntu笔记本电脑上从Docker运行php项目(我想调试)。任何建议,不胜感激。

我的设置:

  • Docker上的PHP版本:7.1
  • Docker上的XDebug版本:2.6.1
  • VS Code中的PHP Debug版本(在我的笔记本电脑上):1.12.6

我的VS Code launch.json文件是:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "log": true,
            "pathMappings": {
                "/var/www/html": "/home/chris/my-test-debugging-project"
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9000
        }
    ]
}

我的/usr/local/etc/php/conf.d/xdebug.ini配置为:

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=172.17.0.2
xdebug.remote_log=/var/www/html/xdebug.log
xdebug.remote_connect_back=0
xdebug.remote_port=9000

XDebug日志文件(来自在php.ini中设置xdebug.remote_log):

    Log opened at 2018-10-14 05:47:16
    I: Connecting to configured address/port: 172.17.0.2:9000.
    W: Creating socket for '172.17.0.2:9000', poll success, but error: Operation now in progress (29).
    E: Could not connect to client. :-(
    Log closed at 2018-10-

14 05:47:16

PHP调试日志输出(来自设置“ log”:launch.json中为true):

<- launchResponse
Response {
seq: 0,
type: 'response',
request_seq: 2,
command: 'launch',
success: true }

3 个答案:

答案 0 :(得分:0)

据我所知9000是默认使用的php-fpm端口。因此,如果您为xdebug.remote_port=9000使用相同的端口,则它将不起作用。您可以通过nginx conf作为示例cat /etc/nginx/conf.d/site.conf来检查您是否可以检查行fastcgi_pass 127.0.0.1:9000;或运行lsof -n -iTCP:9000 | grep LISTEN来显示行是否被利用。我建议您

  • 将其更改为不使用的东西,例如:10000
  • xdebug.remote_host可能有误,登录到容器并尝试对172.17.0.2进行ping操作,如果您的xdebug.remote_host是错误的。找到主机的ip,将其替换为当前的172.17.0.2

答案 1 :(得分:0)

尝试设置xdebug.remote_connect_back=1,让我知道是否可行。

如果这样做,我们应该以与问题that I previously answered相同的方式来结束该问题。

答案 2 :(得分:0)

我在VM上运行本地linux Web服务器。并使用samba将我的共享映射到Windows设备上的信中。我遵循了所有建议,但断点无法按预期工作。我只能调试将“ stopOnEntry”:true“添加到launch.json,但不能在个人添加的断点上将它们全部忽略。 我的问题是我的应用程序运行的路径,我这样修复:

{
        "name": "Listen for XDebug",
        "type": "php",
        "request": "launch",
        "port": 9900,             
        "log": true,
       "stopOnEntry": false,
        "pathMappings": {
             "/var/www/html/booking" : "z:",

          }
 },

    {
        "name": "Launch currently open script",
        "type": "php",
        "request": "launch",
        "program": "${file}",
        "cwd": "${fileDirname}",
        "port": 9900
    }
]

}

这显然是我的linux路径->“ / var / www / html / booking” 这是驱动器映射字母->“ z:”