在 CentOS 上让 PhpStorm 使用 Docker 的完整步骤

在 CentOS 上折腾 Docker 和 PhpStorm,是不少 PHP 开发者的必修课。把这两者打通,意味着你的开发环境可以更接近生产环境,调试也更方便。下面就来拆解一下整个流程,从环境准备到最后的调试配置,一步步说清楚。
一、环境准备
首先要保证你的系统里已经装好了 Docker,并且能正常跑起来。以 CentOS 7 或 8 为例,操作其实不复杂,关键是把依赖装对。
- 安装并启动 Docker:
- 先更新系统,卸载可能存在的旧版本,然后装上必要的工具:
- sudo yum -y update
- sudo yum remove -y docker* containerd.io
- sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 接着安装 Docker 并设置开机自启:
- sudo yum install -y docker-ce docker-ce-cli containerd.io
- sudo systemctl start docker && sudo systemctl enable docker
- 验证一下是否装好:
- docker --version
- docker ps -a
- PhpStorm 这边也得先装好。Linux 版启动后,在设置里确认一下 Docker 插件是启用的——通常默认就是开着的,不用额外折腾。
二、在 PhpStorm 中连接 Docker
环境就位后,接下来就是让 PhpStorm 能跟 Docker 说上话。
- 打开设置路径:File → Settings → Build, Execution, Deployment → Docker(macOS 上是 Preferences)。
- 点一下“+”,选择 Docker。右侧会让你选连接方式:
- 如果 Docker 就在本机,推荐用 Unix Socket,地址填 unix:///var/run/docker.sock。这样安全,也不用额外开端口。
- 如果想连远程的 Docker,就用 TCP Socket,格式类似 tcp://<宿主机IP>:2375。但要注意,远程要是启用了 TLS,还得配上证书目录。
- 设置完点“测试连接”,能通的话就保存应用。
三、配置 PHP 远程解释器与运行容器
连接成功后,就可以配置 PHP 解释器了,让 PhpStorm 用 Docker 里的 PHP 来跑代码。
- CLI 解释器配置:Settings → Languages & Frameworks → PHP → CLI Interpreter → “+” → From Docker, Vagrant, VM, WSL, Remote… → 选 Docker。
- 挑一个你需要的镜像,比如 php:8.2-cli 或者你自己定制的项目镜像。PhpStorm 会自动找到 php 可执行文件的路径。如果需要 Composer 或 PECL,要么在容器里手动装,要么在镜像里提前备好。
- 如果项目用 Docker Compose,也可以配置一波:Settings → PHP → Docker Compose,指定项目根目录下的 docker-compose.yml,再选好对应的服务和项目根目录映射。这样一键启停,依赖管理也更方便。
- 运行和调试容器:
- PhpStorm 的 Services/Docker 工具窗口可以查看和管理容器。
- 创建 Run/Debug Configurations 时,把容器或服务设成运行目标,再配上容器里的启动命令(比如 php-fpm、artisan serve、symfony server:start 等),就能愉快调试了。
四、配置 Xdebug 3 远程调试
对于 PHP 开发者来说,Xdebug 调试配置往往是最容易出问题的一环,但其实理顺了也没那么复杂。
- 首先在容器里装好 Xdebug 3。以 php:8.2-cli 镜像为例:
- docker exec -it <容器名> sh -lc "pecl install xdebug && docker-php-ext-enable xdebug"
- 然后写好 php.ini 或 xdebug.ini(用 php --ini 可以查看具体位置):
- [xdebug]
- zend_extension=xdebug.so
- xdebug.mode=debug
- xdebug.start_with_request=trigger
- xdebug.client_host=host.docker.internal
- xdebug.client_port=9003
- xdebug.idekey=PHPSTORM
- PhpStorm 这边也要配合调整:
- Settings → PHP → Debug:把 Xdebug Port 设为 9003,跟容器里的配置保持一致。
- Settings → PHP → Debug → DBGp Proxy:IDE key 填 PHPSTORM,Host 填 127.0.0.1,Port 填 9003。
- Settings → PHP → Servers:新增一个服务器,Host 填项目的访问域名或 localhost,Port 填 80 或 443,Debugger 选 Xdebug。最关键的一步:配好本地项目路径和容器内路径的映射。
- 怎么触发调试?
- 浏览器访问时带上参数 ?XDEBUG_SESSION_START=PHPSTORM。
- 或者在 CLI 里设置环境变量 XDEBUG_SESSION=PHPSTORM 再执行脚本。
- 然后在 PhpStorm 里点 Debug,命中断点就能联动上。
五、常见问题与排查
实际操作中免不了遇到一些坑,这里把几个常见问题提前说一下。
- 权限问题:PhpStorm 连不上 Docker?检查一下当前用户是否在 docker 组里。如果不行,用 sudo 启动 PhpStorm。Unix socket 的权限通常是 root:docker 660,看看是不是被拦了。
- 连接方式选择:本机就别纠结了,优先用 unix:///var/run/docker.sock。如果用远程 TCP 2375,一定要限制在内网,最好启用 TLS,安全第一。
- 路径映射:这个太重要了。解释器和 Server 配置里,本地路径和容器内路径必须对应上,否则断点不会命中,代码同步也会出问题。
- 端口占用:确认 9003(Xdebug 默认端口)没被其他进程占着。如果被占,修改 php.ini 里的端口号,同时改掉 PhpStorm 的 Debug Port,两边一致才能行。
- Xdebug 版本差异:必须说明的是,本文的配置是基于 Xdebug 3 写的。如果你还在用 2.x,参数完全不同,比如 xdebug.remote_enable、xdebug.remote_port 这些,请参考对应版本的文档。
本文转载于:https://www.yisu.com/ask/93133094.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。