gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 21:04:14 26 4
gpt4 key购买 nike

我有一个运行以下命令的 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 中的网站提供服务

当它尝试写入日志并尝试写入 session 文件时会发生此问题。虽然它会创建文件,但它不能写入它们。

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

为了让 laravel 写信给他们,我必须 $ chmod 777 <.log|sessionfile>它工作得很好。显然,这不是开发方式,因为我需要定期开始新 session 并每天创建新日志。

如何授予 Laravel 和 Docker 容器写入它们创建的文件的权限?

更新:这是 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

这是项目目录:

enter image description here

更新 #3

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

enter image description here

enter image description here

enter image description here

最佳答案

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

运行 usermod -u 1000 nginx

或者如果您使用的是 Apache,您可以使用 sub。 Apache 的 nginx。

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

奇怪的是,创建日志文件并写入日志文件不是问题,即使该卷是单独安装的,但起源于我 Mac 的同一文件夹“/Users”。

关于php - 从 docker nginx/php-fpm 安装在本地卷(Mac)上的 Laravel 无法写入 session 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35302635/

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