当连接来自Docker容器时,PhpStorm xdebug找不到文件

Rud*_*olf 6 xdebug phpstorm docker docker-compose

我正在尝试将Magento开发环境移至docker。我已经开始使用现成的解决方案。除了xdebug,几乎所有东西都可以正常工作。

我已根据本教程设置了PhpStorm,并已在服务器部分的docker卷上正确映射了本地项目目录。当我尝试开始调试时,然后在调试器窗口中显示此消息

在本地找不到文件“ /var/www/html/pub/index.php”。要修复它,请通过环境变量PHP_IDE_CONFIG设置服务器名称,然后重新启动调试会话。

我添加了这个

environment:
  - PHP_IDE_CONFIG=serverName=Magetwo
Run Code Online (Sandbox Code Playgroud)

docker-compose.ymlphp部分中的,但仍然是相同的错误。仅当我的项目位于主机的相同目录(如容器卷)中时,调试才起作用,但是我希望具有不同的目录。

我应该更改些什么以强制xdebug工作?

小智 6

我通常将docker子网IP设置为如下所示的远程主机ip:

XDEBUG_CONFIG=remote_host=172.17.0.1
PHP_IDE_CONFIG=serverName=your_server_name_in_phpstorm_settings
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令在Linux中检查ip:

ifconfig docker0
Run Code Online (Sandbox Code Playgroud)

另外,如果您使用的是docker-compose,则可以将xdebug变量定义移动到单独的.env文件,并将其链接到docker-compose.yml中的容器配置:

container_name:
    ...
    env_file: .env
    ...
...
Run Code Online (Sandbox Code Playgroud)


Thi*_*der 6

尝试使用 docker 在 PHPStorm 上进行调试时,我遇到了同样的问题。

我通过将 server_name 添加到 nginx 配置来解决它

server_name _;// 将此行添加到 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这有助于有人仍然和我有同样的问题

  • 您应该突出显示示例代码的具体部分解决了问题 (2认同)

Ric*_*ins 5

尝试这样添加:

environment:
  PHP_IDE_CONFIG: "serverName=Magetwo"
Run Code Online (Sandbox Code Playgroud)

然后在“设置”>“PHP”>“服务器”中添加一个新服务器,其中包含名称Magetwo以及用于调试的主机和端口。 在此输入图像描述


小智 2

我遇到了同样的问题尝试在 xdebug 配置中添加这一行:

xdebug.extended_info = 1
Run Code Online (Sandbox Code Playgroud)

它应该将环境变量传递给 $_SERVER