如何正确配置 Docker 以在每次调试时都不需要导出PHP_IDE_CONFIG

How to properly config Docker to not require export PHP_IDE_CONFIG every time I debug

提问人:Uriel 提问时间:11/3/2023 最后编辑:Uriel 更新时间:11/3/2023 访问量:41

问:

我正在尝试通过从头开始学习一个基本项目来学习 Laravel。在对其他替代方案进行了一些测试后,我使用这个 docker-nginx-php-laravel 作为基础平台。

它几乎在所有东西上都像魅力一样工作,但是当我尝试从终端调试时,我需要运行

export PHP_IDE_CONFIG="serverName=localhost"

每次,否则 Xdebug/PhpStorm 不会停止并抛出此错误:

“要修复它,请通过环境变量设置服务器名称PHP_IDE_CONFIG和 重新启动调试会话。

我不介意每次都这样做,但我确信这不是正确的工作方式,所以我想知道我需要在 Docker 上配置什么以及在哪里配置,以便默认识别我的终端。

我正在使用 Mac,这是我正在使用的 Xdebug 配置:

[PHP]
zend_extension=xdebug

xdebug.mode = coverage,debug,develop
xdebug.client_port = 9003
xdebug.client_host = host.docker.internal
xdebug.idekey = PHPSTORM
#xdebug.show_error_trace = 1
xdebug.start_with_request = yes
xdebug.file_link_format = phpstorm://open?%f:%l
xdebug.discover_client_host= 1
xdebug.max_nesting_level = 10000
xdebug.log="storage/logs/xdebug.log"
xdebug.log_level = 0
xdebug.extended_info = On

根据谷歌的说法,我应该修改bash配置。

nano ~/.bash_profile

但我不清楚如何从Docker做到这一点(或者这是否是最好的解决方案)。Dockerfile 保持原样

关于docker-compose,受这篇文章的启发,尝试在“laravel”服务下添加一个“环境”行,但没有用:

  environment:
    PHP_IDE_CONFIG: "serverName=localhost"

有什么建议吗?

Laravel Docker PHPStum XDeploy

评论


答:

3赞 Jeyhun Rashidov 11/3/2023 #1

您应该将 environment 指令放在正确的缩进级别:docker-compose.yml

services:
  laravel:
    image: your-image-name
    ports:
      - "80:80"
    environment:
      - PHP_IDE_CONFIG=serverName=localhost
    # ...

或者,如果你的 PHP 服务有一个自定义的 Dockerfile,你也可以这样设置:

FROM php:7.4-fpm
# ...

ENV PHP_IDE_CONFIG "serverName=localhost"

# ...

如果继续遇到问题,请确保检查日志并验证是否确实在 Docker 容器中设置了该变量:

docker exec -it <your-container-name> bash
echo $PHP_IDE_CONFIG