我正在尝试通过从头开始做一个基本项目来学习 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"
有什么建议吗?
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