【问题标题】:Allow Apache to write into locally synched docker volume允许 Apache 写入本地同步的 docker 卷
【发布时间】:2018-09-20 09:47:56
【问题描述】:

Dockerfile

FROM php:5.6-apache
COPY config/php.ini /usr/local/etc/php/
RUN docker-php-ext-install mysql mysqli pdo pdo_mysql
RUN rm /var/log/apache2/access.log
RUN a2enmod rewrite
RUN a2enmod deflate
RUN a2enmod headers

docker-compose.yml

version: "2"
services:
  www:
    build: .
    ports: 
        - "8001:80"
    volumes:
        - ./www:/var/www/html/
    networks:
        - default

我在www 中有一个名为photos 的文件夹。它位于www/photos。我想使用我的 php 上传功能向它写入文件。由于 php-apache 没有对该卷的写访问权限,我收到了权限被拒绝错误。如何给apache写权限?

【问题讨论】:

  • 你能分享你的 php 代码所指的确切目录吗,就像在 docker 容器中一样,卷被命名为 /var/www/html 而不是 /www
  • 写入磁盘的文件在 docker-container:/var/www/html/controllers/file.php

标签: php apache docker docker-compose dockerfile


【解决方案1】:

检查你主机系统上目录的权限,可能客人没有写权限。如有必要,使用chmod 更改它们:

chmod 766 -R your/directory/

此外,您可以通过在行尾添加:rw(用于读/写)来指定在您的docker内写入指定安装卷的权限:

- ./www:/var/www/html/:rw

由于这应该是默认值,因此没有必要使用它,也不应该成为您的问题的一部分。

【讨论】:

  • 不幸的是,这并没有解决它。仍然从 $file_put_contents 返回 0。
  • 对不起,我很笨。它应该是 chmod 766(6 表示读写)。我在答案中更改了它。
  • @TimDau 这对您的问题有帮助吗?
  • 不抱歉没有。
猜你喜欢
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 2020-12-09
  • 1970-01-01
相关资源
最近更新 更多