Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么可以';t xdebug3访问tmp文件夹中的配置文件数据?_Php_Docker_Xdebug - Fatal编程技术网

Php 为什么可以';t xdebug3访问tmp文件夹中的配置文件数据?

Php 为什么可以';t xdebug3访问tmp文件夹中的配置文件数据?,php,docker,xdebug,Php,Docker,Xdebug,我有一个php docker容器,在其中安装了xdebug FROM php:8.0-fpm RUN pecl install xdebug-3.0.2 > /dev/null && \ docker-php-ext-enable xdebug > /dev/null 我装载的xdebug.ini(/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini)文件如下所示: zend_extension=xdeb

我有一个php docker容器,在其中安装了xdebug

FROM php:8.0-fpm
RUN  pecl install xdebug-3.0.2 > /dev/null && \
     docker-php-ext-enable xdebug > /dev/null
我装载的xdebug.ini(
/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
)文件如下所示:

zend_extension=xdebug

xdebug.mode=debug,profile
xdebug.client_port= 9000
xdebug.start_with_request=yes
xdebug.output_dir = /tmp/profile
虽然xdebug可以工作,但我在profiler文件中看到了这一点:

Xdebug: [Profiler] File '/tmp/profile/cachegrind.out.15' could not be opened.
在Dockerfile的末尾,我将用户设置为
www-data

USER www-data
这就是它无法访问文件夹的原因吗

xdebug需要什么才能打开该文件?它在tmp文件夹中,所以我认为它应该能够在那里拥有读写权限。

我添加了:

RUN mkdir /tmp/profile; chmod 777 /tmp/profile

到Docker文件。

Xdebug需要指示将探查器文件写入的目录才能存在。如果它不存在,则无法写入该文件,您将收到该错误消息

Xdebug将尝试找出无法写入文件的原因,并将尽职尽责地在其日志文件(如果
Xdebug.log
设置为可写文件名)中报告,以及在脚本中运行
Xdebug_info()
时显示的诊断日志

在您的情况下,您需要确保Dockerfile包括:

RUN mkdir /tmp/profile; chmod 777 /tmp/profile
或者,如果使用docker compose,还可以使用以下命令绑定目录:

    volumes:
      - type: "bind"
        source: "/tmp/profile"
        target: "/tmp/profile"
这就是我在Xdebug.org网站上所做的

docker compose应在本地系统上创建
/tmp/profile
目录,如果启动容器时该目录尚不存在