因此,我已经有了一个要在目录中重命名的文件夹。我放在该挂载目录中的所有其他文件夹都说:
警告: 重命名(/ app / public / CoverImages / S3-Uploaded / subfolder-for-depth / 2019-01-15-Uploaded,/ app / public / CoverImages / S3-Uploaded / subfolder-for-depth / 2019-01-15-已上载AWS): 权限在/app/src/S3CoverImages.php中的第260行被拒绝
我的php代码如下:
if(is_dir($dirPath)) {
$success = rename(rtrim($dirPath, " -/"), rtrim($dirPath, " -/") . "-AWS");
我的dockerfile权限代码如下:
RUN chown www-data:www-data /usr/local/etc/php-fpm.conf && \
chown -R www-data:www-data /app && \
chmod -R 755 /app && \
chown -R www-data:www-data /var/www && \
chmod +x /usr/local/bin/start.sh; sync
在docker-compose.yml中,它安装了所需的目录:
version: '3.4'
services:
nginx:
image: americanreading/someproject:dev
restart: on-failure:3
ports:
- 8001:8080
php:
image: americanreading/bisapi-php:dev
environment:
#lots of server details here.
volumes:
- /mnt/coverimages/S3-Uploaded/subfolder-for-depth:/app/public/CoverImages/S3-Uploaded/subfolder-for-depth/
我还有其他需要确保放入此挂载目录的任何文件夹都具有php权限来重命名该文件夹的信息吗?有什么证据表明我目前不在做什么?
几乎忘了,这是我们在bash中查询的当前权限:
arcit@arcvm13:~/arcbis-dev$ docker-compose run --rm php bash
www-data@9a78e9799427:/app$ ls -la /app/public/CoverImages/S3-Uploaded/subfolder-for-depth/
total 16
drwxrwxrwx 2 root root 4096 Feb 25 14:31 .
drwxr-xr-x 3 root root 4096 Feb 25 14:38 ..
-rwxrwxrwx 1 root root 6148 Feb 25 14:32 .DS_Store
drwxrwxrwx 2 root root 0 Oct 20 2015 2010-02-15
drwxrwxrwx 2 root root 0 Feb 25 14:30 2019-01-15-Uploaded
drwxrwxrwx 2 root root 0 Feb 25 14:31 2019-02-07-Uploaded-AWS
drwxrwxrwx 2 root root 0 Feb 22 16:24 2019-02-18
这是深度子文件夹中的ls -la本身:
drwx------@ 1 toddcoulson staff 16384 Oct 20 2015 2010-02-15
drwx------@ 1 toddcoulson staff 16384 Feb 25 09:30 2019-01-15-Uploaded
drwx------ 1 toddcoulson staff 16384 Feb 25 09:31 2019-02-07-Uploaded-AWS
drwx------@ 1 toddcoulson staff 16384 Feb 22 11:24 2019-02-18
答案 0 :(得分:1)
该卷是在运行容器时创建的,而不是在构建容器时创建的。默认情况下,该目录的权限为root
。
这里的另一个问题是您将卷绑定到主机路径“ / mnt / coverimages / S3-Uploaded / sub-folder-for-depth” 。
这样该目录将具有主机的权限(例如,用户1000
)。
一种解决方案是在Dockerfile中为该用户添加www-data
组。