【发布时间】:2021-03-04 07:58:48
【问题描述】:
我有一个可以在 docker 上运行的 php 应用程序。我想将一个命令从 php 代码发送到应该创建文件的容器(some_dir/certs/cert.crt 等)。这个命令我是这样运行的(通过 system/exec/shell_exec 或 symfony/process)
system("traefik-certs-dumper file --source acme.json --dest some_dir --version v2");
当 php 运行此代码时,已创建目录但未创建文件,我也没有任何错误。
当我通过docker exec 从终端而不是从 php 进行此命令时,此命令有效。这可能是 php 和 docker 容器之间的一些权限问题,但我不知道如何设置它。
我正在尝试在 docker 文件中进行设置,但无法正常工作:
RUN chmod 777 /go/bin/traefik-certs-dumper
RUN usermod -u 1000 www-data
标准命令也是这样工作的:
system("mkdir -p some_dir_1234");
system("touch some_dir_1234/some_file_1234");
如何允许已安装的库创建文件?
【问题讨论】:
-
日志中是否有任何错误,这将有助于理解为什么没有创建文件。
-
没什么特别的。系统函数返回 0。没有错误
-
您是否尝试过使用
exec()查看输出 - 类似于exec("traefik-certs-dumper file --source acme.json --dest some_dir --version v2", $output); print_r($output); -
@NigelRen 输出包含
array ( 0 => 'some_dir', 1 => '├──certs', 2 => '└──private', )所以只有命令创建的目录,但没有我需要的证书文件
标签: php docker permissions command