无法访问 docker php 图像中的图像

Posted

技术标签:

【中文标题】无法访问 docker php 图像中的图像【英文标题】:Can't access images in docker php image 【发布时间】:2020-07-19 02:05:25 【问题描述】:

我有一个带有一些 js 的小型 php 网站,想用 docker 运行它。因为它是一个画廊,所以它的子文件夹中有图像。主 index.php 运行良好,但没有找到图像。我使用普通的 docker CLI 和“echo ls ...”查看了该文件夹,但一切都在里面。如果我转到 localhost:8080/images,我会收到错误 403(控制台打印如下)。

图像是通过 php 加载的,它生成的路径如下:'/var/www/html/images/2555-P160-05.jpg'。他们可能错了吗?


解决方案:我走错了路。我现在通过

获取路径名
$link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 
                "https" : "http") . "://" . $_SERVER['HTTP_HOST'] .  
                $_SERVER['REQUEST_URI']; 

而不是 getcwd()。 cmets 提醒我直接检查图像而不是整个文件夹。我还编辑了 Dockerfile 并删除了权限更改。


操作系统:Ubuntu 19.04 码头工人-v:19.03.6

这是我的最新编辑:

docker-compose.yml:

version:  '3'
services:
  photography-website:
    build: 
      context: ./
      dockerfile: ./
    ports:
      - 8080:80
    volumes:
      - .:/var/www/html

Dockerfile:

FROM php:7.4.4-apache

错误 403:

172.18.0.1 - - [06/Apr/2020:23:19:48 +0000] "GET /images/ HTTP/1.1" 403 493 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0"

感谢阅读。

【问题讨论】:

您使用的是什么操作系统?它是 Docker 工具还是原生 Docker?在 Windows 中,Docker 工具仅在您的用户目录 (%userprofile%) 中工作...在 Native Docker for WIndows 10 中...您需要安装您正在使用的驱动器...可能是问题所在吗?尝试在您的 %userprofile% 目录中工作,例如,在 Documents 中 1) 您的chown 语法不正确。 2) 查看 目录 (GET /images/) 时的 403 可能是单独查看图像的一个单独问题,例如,可能是由于 DirectorIndex 配置 see 很多 duplicates 这里为 @987654323 @建议。 3) Web 服务器可以读取您的index.php 而无需更改其权限,因此可能不需要更改图像的权限?您实际上没有描述当您尝试查看单个图像时会发生什么? 【参考方案1】:

路径应该是 localhost:8080/images/[image].jpg 而不是 var/www/html/images/[image].jpg

更多信息在我上面的帖子中。

【讨论】:

以上是关于无法访问 docker php 图像中的图像的主要内容,如果未能解决你的问题,请参考以下文章

用于 php 的 docker 映像无法在 Windows 10 的浏览器上运行

由于出现此错误,无法运行 docker 容器:无法访问 jarfile app.jar

无法使用 PHP 显示数据库中的 blob 图像

无法访问资产目录中的图像

无法从 SwiftUI 框架中的资产目录访问的图像

无法访问 WEBContent/WEB-INF 中的图像