当连接来自docker容器时,PhpStorm xdebug无法找到文件

时间:2017-04-24 12:38:52

标签: docker phpstorm docker-compose xdebug

我正在尝试将我的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工作?

5 个答案:

答案 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)

试试这样添加:

environment:
  PHP_IDE_CONFIG: "serverName=Magetwo"

然后在“设置”>“PHP”>“服务器”中添加名为 Magetwo 的新服务器以及用于调试的主机和端口。 enter image description here