php - 将完整路径传递给 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
解决方案
在 Docker VM 上运行ls /home/
,我敢打赌您期望的目录不存在。您的路径中引用的用户可能不存在于 VM 上,仅存在于您的主机上。
相对路径有效,因为它相对于提供的根目录。
推荐阅读
- node.js - 状态用户是特定的吗?
- eclipse - 在 eclipse 运行配置中设置 mvn clean package -P profile_name
- node.js - 具有一些必需属性的 Mongoose 混合模式
- python - 如何使用python获取ip和子网掩码地址
- jquery - 未捕获的 ReferenceError:未定义 jquery rails 5.2
- python - 使用 uwsgi 服务时,Flask 有多少后端实例正在运行
- .net-core - 使用标签助手和 dotnet 核心将列表发布到控制器
- mysql - MYSQL - 解析逗号分隔的数字字符串并将每个数字与设置数字进行比较
- java - 使用@Aspect 更改方法签名
- github - 我可以通过 API 检索 GitHub PR 审核状态吗?