Php 为什么可以';t xdebug3访问tmp文件夹中的配置文件数据?
我有一个php docker容器,在其中安装了xdebugPhp 为什么可以';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
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
目录,如果启动容器时该目录尚不存在