我正在尝试将我的Magento开发环境移动到docker。我开始使用this准备使用的解决方案。除了xdebug之外,几乎所有东西都能正常工作。
我根据this tutorial设置了PhpStorm,并且我已经在服务器部分的docker卷上正确映射了我的本地项目目录。当我尝试开始调试时,在调试器窗口中显示此消息
无法在本地找到文件'/var/www/html/pub/index.php'。 要修复它,请按环境变量PHP_IDE_CONFIG设置服务器名称,然后重新启动调试会话。
我添加了这个
environment:
- PHP_IDE_CONFIG=serverName=Magetwo
到php部分的docker-compose.yml
,但仍然是同样的错误。只有当项目位于主机上的同一目录(如容器卷)中时,调试才有效,但我想拥有不同的目录。
我应该更改什么来强制xdebug工作?
答案 0 :(得分:5)
我通常将docker子网IP设置为远程主机ip,如下所示:
XDEBUG_CONFIG=remote_host=172.17.0.1
PHP_IDE_CONFIG=serverName=your_server_name_in_phpstorm_settings
您可以使用以下命令在Linux中检查ip:
ifconfig docker0
此外,如果您正在使用docker-compose,您可以将xdebug变量定义移动到单独的.env文件中,并将其链接到docker-compose.yml中的容器配置:
container_name:
...
env_file: .env
...
...
答案 1 :(得分:0)
我遇到了同样的问题 尝试在xdebug配置中添加以下行:
xdebug.extended_info = 1
它应该将env变量传递给$ _SERVER
答案 2 :(得分:0)
我有一个类似的问题,同样'修复它通过环境变量PHP_IDE_CONFIG设置服务器名称并重新启动调试会话。'
为我解决的问题最终是设置了$ _ENV ['PHP_IDE_CONFIG']。当你收到这条消息时检查你的$ _ENV,我打赌你不会有一个名为'PHP_IDE_CONFIG'的密钥。
我们如何得到这套? 首先确保容器中有一个名为PHP_IDE_CONFIG的环境变量。如果你不这样做那么。我个人使用一个文件来定义我的env变量。请参阅https://docs.docker.com/compose/environment-variables/#set-environment-variables-in-containers并搜索“env_file”。
一旦你的env变量进入你的容器,它仍然无法正常工作,那么试试这个: 转到视图>工具窗口>泊坞窗。然后单击“编辑配置”(它是一个图标)。在那里,确保您已连接到Docker,并且您已将vm路径映射到本地路径。
除此之外,我还使用了Oleg的答案
xdebug.extended_info=1
虽然这本身并没有解决我的问题,但我正在使用此设置。
答案 3 :(得分:0)
当尝试使用docker在PHPStorm上调试时,我遇到相同的问题。
我通过将server_name添加到nginx config来解决它
服务器名称_; //将此行添加到nginx配置文件中
server {
listen 80;
server_name _;// add this line to nginx config file
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app_bug:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include xdebug/remote.conf;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}
希望这可以帮助某人对我也有同样的问题
答案 4 :(得分:0)