You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VSCode内置浏览器中设置XDEBUG_SESSION调试PHP

VSCode内置浏览器调试PHP时设置XDEBUG_SESSION Cookie的方法

我刚发现VSCode有内置浏览器,想用它调试PHP代码,但不知道怎么在这个浏览器会话中设置XDEBUG_SESSION Cookie,以下是可行的解决方法和我的相关配置文件:

解决方式

方式1:URL参数快速触发

不用手动设置Cookie,直接在访问的站点URL末尾加上?XDEBUG_SESSION=VSCODE,比如访问http://localhost:8080/?XDEBUG_SESSION=VSCODE。Xdebug会自动识别这个参数,生成并设置对应的Cookie,后续所有请求都会带上调试会话标识。

方式2:配置VSCode调试监听自动连接

在VSCode的.vscode/launch.json里添加PHP调试配置,确保路径映射和端口与你的环境匹配:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "监听Xdebug请求",
            "type": "php",
            "request": "launch",
            "port": 9003, // Xdebug 3默认端口,和xdebug.ini配置一致即可
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}" // 容器内代码路径对应本地项目根目录
            }
        }
    ]
}

启动这个调试监听后,用内置浏览器访问站点,Xdebug会自动连接VSCode的调试器,无需手动处理Cookie。

方式3:临时脚本设置Cookie

如果需要持久化Cookie,可以写个简单的PHP脚本:
创建set_xdebug_cookie.php文件,放到WordPress根目录(容器内/var/www/html路径):

<?php
setcookie('XDEBUG_SESSION', 'VSCODE', 0, '/');
header('Location: /');
?>

用内置浏览器访问http://localhost:8080/set_xdebug_cookie.php,脚本会自动设置Cookie并跳转到主页,后续请求都会带上这个Cookie。


我的相关配置文件

compose.yaml

name: ${project}
volumes:
  db:
networks:
  default:
    name: ${project}
    driver: bridge
services:
  db:
    image: mariadb
    container_name: ${project}-db
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    volumes:
      - db:/var/lib/mysql

  wp:
    build: ./
    container_name: ${project}-wp
    depends_on:
      - db
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./app:/var/www/html/wp-content
      - ./xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini 
      - ./logs:/var/log
    ports:
      - 8080:80

Dockerfile

# Source image
FROM wordpress:6.9.4-php8.4-apache
ARG UPLOADS_INI="/usr/local/etc/php/conf.d/uploads.ini"

# Install AND configure Xdebug
RUN pecl install xdebug \
    && docker-php-ext-enable xdebug \
    && echo "upload_max_filesize = 128M" > ${UPLOADS_INI} \
    && echo "post_max_size = 128M" >> ${UPLOADS_INI} 

xdebug.ini

xdebug.mode = debug
# Make sure to restart the container after editing this file
xdebug.start_with_request=yes
xdebug.client_host = host.docker.internal
xdebug.discover_client_host=On

xdebug.log_level = 0
xdebug.log = /var/log/xdebug.log
xdebug.output_dir = /var/log/xdebug

内容的提问来源于stack exchange,提问作者theking2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 04:17:26