首页 > 解决方案 > 将完整路径传递给 Docker 映像时“没有这样的文件或目录”,但可以使用同一文件夹的相对路径

问题描述

从 Apache 中的 PHP 页面,我正在尝试运行将生成 PDF 的 docker 命令。我已经将我的用户和 www-data 用户都添加到了 docker 组,这样他们就可以在没有 sudo 的情况下执行 docker 命令。

这适用于 /home/my_user/projects/my_project/public 文件夹中的 PHP 文件:

system("docker run --rm -v `pwd`:/app -w /app weasyprint:51 ./healthcheck.htm /weasyprint_test.pdf");

但是当我指定完整路径(我已经验证是正确的)时,它不起作用:

system("docker run --rm -v `pwd`:/app -w /app weasyprint:51 /home/my_user/projects/my_project/public/healthcheck.htm /home/my_user/projects/my_project/public/weasyprint_test.pdf");

当我运行第二个版本时,我在 PHP 错误日志中看到了这一点: su-exec: /home/my_user/projects/my_project/public/healthcheck.htm: No such file or directory

对于我的一生,我无法弄清楚为什么第一个版本可以工作而第二个版本不能工作,因为它们指的是相同的路径,只是通过不同的语法。如果您有任何想法,请告诉我。

如果有帮助,我将使用此 Docker 映像进行 Weasyprint:https ://hub.docker.com/r/minidocks/weasyprint

标签: phpdockerapacheweasyprint

解决方案


在 Docker VM 上运行ls /home/,我敢打赌您期望的目录不存在。您的路径中引用的用户可能不存在于 VM 上,仅存在于您的主机上。

相对路径有效,因为它相对于提供的根目录。


推荐阅读