Docker PHP 无法打开流:图片上传权限被拒绝

问题描述 投票:0回答:1

我正在构建一个 PHP/Docker Web 应用程序。我有一个 HTML 表单,用户可以在其中上传图像并将其存储到本地目录中。我正在使用 W3Schools 文件上传示例。

但是,当尝试通过表单上传时,我收到“权限被拒绝”错误:警告:move_uploaded_file(image/listingsorchid.jpg):无法打开流:/var/www/html/process-listing.php中的权限被拒绝59号线。

我正在使用 php-docker-simple_php 图像。我使用

docker exec -it 9381479b00e6 sh
whoami
来确认映像正在以 root 身份运行。
file_uploads = On
在我的本地 php 安装中启用。

我的 Dockerfile 如下所示:

FROM php:7.4-apache
RUN docker-php-ext-install mysqli

我的 docker-compose 看起来像这样:

version: '3.1'

services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 80:80
    volumes:
      - ./src:/var/www/html/

  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - mysql-data:/var/lib/mysql

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

volumes:
  mysql-data:

此线程中的一个用户建议创建一个 uploads.ini 来设置 file_uploads = On

 并将其包含在 Dockerfile 中。我已经创建了 uploads.ini,但我不确定如何将其实现到我的 Dockerfile 中或者它是否有效。

我应该怎么做才能解决这个错误?

php docker docker-compose permissions dockerfile
1个回答
0
投票
您可以尝试修改 Dockerfile 以包含此新行:

COPY ./path/to/uploads.ini /usr/local/etc/php/conf.d/
您的完整 Dockerfile 将如下所示:

FROM php:7.4-apache RUN docker-php-ext-install mysqli COPY ./src /var/www/html/ COPY ./path/to/uploads.ini /usr/local/etc/php/conf.d/
这会将 ini 文件复制到正确的位置,并将覆盖原始配置。如果您不想修改原始文件或维护副本,这非常有用。

您应该能够通过将

file_uploads

 添加到 PHP 来查看 
On
 是否设置为 
phpinfo()

© www.soinside.com 2019 - 2024. All rights reserved.