繁体   English   中英

从docker nginx / php-fpm安装在本地卷(Mac)上的Laravel无法写入会话文件

[英]Laravel installed on a local volume (Mac) from docker nginx/php-fpm can't write session files

我有一个运行以下内容的docker-compose.yml文件(创建名为mmm / nginx的图像):

web:
 image: mmm/nginx
 ports:
 - "80:80"
 volumes:
 - ./var:/var/www
 - ./etc/nginx/sites-enabled:/etc/nginx/sites-enabled/
 links:
 - php
 - db

php:
 image: rossriley/php56-fpm
 volumes:
 - ./var:/var/www
 - ./etc/php5/php-fpm.conf:/etc/php5/fpm/php-fpm.conf
 links:
 - db

db:
 image: sameersbn/mysql
 ports:
 - "3306:3306"
 volumes:
 - /var/lib/mysql
 environment:
 - DB_NAME=tables
 - DB_USER=table
 - DB_PASS=pass

它很好地提供了存储在/var/www

当它尝试写入日志并尝试写入会话文件时会发生此问题。 虽然它确实创建了文件,但它无法编写它们。

storage文件夹及其嵌套目录的权限设置为777

为了让laravel写入它们,我必须使用$ chmod 777 <.log|sessionfile>并且它运行良好。 显然,这不是开发方式,因为我需要定期开始新会话并每天创建新日志。

我怎样才能给laravel和docker container写入他们创建的文件的权限?

更新:这是laravel的日志所说的:

local.ERROR: exception 'ErrorException' with message 'file_put_contents(/var/www/com.mtrinteractive.sandbox.form/storage/framework/sessions/e0117b8ca17af9c19572ddb305a272b4c22bd18d): failed to open stream: Permission denied' in /var/www/com.mtrinteractive.sandbox.form/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:81

更新#2

这是项目目录:

在此输入图像描述

更新#3

以下是项目的权限和所有者:

在此输入图像描述

在此输入图像描述

在此输入图像描述

我不知道这是否有帮助,但如果你使用Dockerfile就可以添加

运行usermod -u 1000 nginx

或者如果你使用Apache你可以分。 nginx for apache。

这似乎只是OS X的一个问题,问题实际上与VirtualBox有关,而与Docker没有直接关系。 我在Docker v1.9.x中遇到过这个问题,现在再次使用v1.10.3。 这次我无法用上述解决方案解决它,但能够通过将我的缓存写入数据库来解决它。 在这种情况下,它是MySQL / MariaDB,但很容易就是memcache或redis。

奇怪的是,创建日志文件并写入它们不是问题,即使卷是单独安装但源自我的Mac的同一文件夹'/ Users'。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM