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

问题描述 投票:0回答:1

我正在尝试通过从头开始做一个基本项目来学习 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

根据 Google 我应该修改 bash 配置

nano ~/.bash_profile

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

关于docker-compose,受

这篇文章的启发,尝试在“laravel”服务下添加“环境”行,但没有成功:

environment: PHP_IDE_CONFIG: "serverName=localhost"
有什么建议吗?

laravel docker phpstorm xdebug
1个回答
1
投票
您应该将环境指令放置在

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
    
© www.soinside.com 2019 - 2024. All rights reserved.