php - 在 Docker 环境中运行 Symfony 时的文件夹权限

标签 php caching docker permissions symfony

我正在 OSX 上运行 Docker 容器。容器包括:

  1. 交响乐
  2. Nginx
  3. php-fpm
  4. Redis

这是运行 Symfony 应用程序的非常常见的设置。

我遇到了一些奇怪的文件夹权限问题,并且收到此错误: error screenshot

我的Symfony可以创建文件夹

/var/www/var/chache 

但是它无法写入其中。 创建缓存文件夹后,文件夹权限将设置为:

10344 drwxr-xr-x 1 1000 staff    68 Apr 15 00:33 cache

该文件夹的所有者是我的本地 OSX 用户,Docker 正在该用户下运行。 我尝试从 Docker 中的 Symfony CLI 更改文件夹权限或所有者,但没有效果。 我尝试在本地控制台下chmod -R 777,权限被更改,但随后 Symfony 在缓存文件夹内创建文件夹,并且无法再次写入。

我还尝试在 app_dev.php 中禁用缓存:

$kernel = new AppKernel('dev', true); 
// $kernel->loadClassCache();
$request = Request::createFromGlobals();

在 config.yml 中:

twig:
    cache:        false

没有任何效果,所以我在这里迷路了。

有什么想法可以解决问题吗?

最佳答案

您还没有向您展示 Dockerfile,因此我可以为您提供一个使用 PHP-FPM 的容器示例,其中解决了此问题:

此行正在修复权限错误:usermod -u 1000 www-data

FROM debian:jessie  
RUN apt-get update
RUN apt-get install -y curl \
                       mcrypt \
    && apt-get install -y php5 \
                       php5-fpm \
                       php5-cli \
                       php-pear \
                       php5-common \
                       php5-igbinary \
                       php5-json \
                       php5-mysql \
                       php5-mysqlnd \
                       php5-gd \
                       php5-curl \
                       php5-dev \
                       php5-sqlite \
                       php5-memcached \
                       php5-memcache \
    && usermod -u 1000 www-data

EXPOSE 9000

关于php - 在 Docker 环境中运行 Symfony 时的文件夹权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36636596/

相关文章:

javascript - 使用 PHP、Ajax 和 Javascript/jQuery 进行推送?

php - 如何在Codeigniter中更新数据库中特定列的值

php - 带有查询字符串的 HTTP 缓存 URL

python - Micromamba 和 Dockerfile 错误 :/bin/bash: activate: No such file or directory

docker - 如何删除早于 X 且未使用的 docker 镜像

php - AES-128-CBC 与 LUA、PYTHON 和 PHP 的工作方式不同

php - MySQL 查询 - 基本连接建议

ios - 核心数据过多 VM : SQLite page cache

c# - 缓存 Lucene.net 搜索结果

docker - 使用env_file在撰写文件中设置变量时发出警告