gpt4 book ai didi

php - 如何使用docker-compose将用户上传的文件保存到已安装的卷中?

转载 作者:行者123 更新时间:2023-12-02 21:02:03 25 4
gpt4 key购买 nike

我有一个配置有docker-compose的LAMP堆栈,在将用户上传的文件保存到安装的卷以进行持久存储方面遇到问题。这是我的撰写文件:

    version: '3.7'
services:

php-apache:
build: './php-apache'
restart: always
ports:
- 5000:80
volumes:
- ./public_html:/var/www/html
- ./composer/vendor:/var/www/html/vendor
- ./tmp:/usr/local/tmp
- ./cert/:/usr/local/apache2/cert
- covers:/var/lib/app-data/covers:rw
- ebooks:/var/lib/app-data/ebooks:rw
depends_on:
- mysql
- composer

mysql:
build: './mysql'
restart: always
ports:
- '33061:3306'
volumes:
- ./database:/var/lib/mysql
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
environment:
MYSQL_ROOT_PASSWORD: secretpw
MYSQL_USER: myuser
MYSQL_PASSWORD: mypw
MYSQL_DATABASE: mydb

composer:
build: './composer'
working_dir: /composer
volumes:
- ./composer:/composer
command: install

volumes:
covers: {}
ebooks: {}


在我的PHP代码中,我尝试将文件保存到卷中:
    if (!move_uploaded_file($_FILES[$file]['tmp_name'], $path . $filename)) {
throw new RuntimeException("Failed to move uploaded file.");
}

我收到以下错误:

Warning: move_uploaded_file(/var/lib/app-data/covers/useruploadedfile.jpg): failed to open stream: Permission denied



我试图将对卷的权限更改为无济于事。有什么方法可以授予PHP对已安装卷的写入权限?

最佳答案

I have attempted to change permissions on the volume to no avail. Is there any way to give PHP write permissions to mounted volumes?



简而言之,在您的方案的上下文中,无法从docker容器中更改已安装卷的权限。您需要从主机级别执行此操作。

当主机是基于Linux的主机(例如RedHat,Ubuntu)时,通常会发生此问题,而对于MacOS来说,它可以正常工作。您将需要:
  • 找出docker容器中的哪个用户ID正在运行命令。
  • 确保主机上的相同用户ID具有足够的权限在已安装文件夹中创建文件。
  • 关于php - 如何使用docker-compose将用户上传的文件保存到已安装的卷中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60077152/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com