我有一个运行以下命令的 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
当它尝试写入日志并尝试写入会话文件时会出现此问题。尽管it does创建文件,但无法写入它们。
该文件夹为storage
及其嵌套目录的权限设置为777
.
为了让 Laravel 给他们写信,我必须$ chmod 777 <.log|sessionfile>
而且效果很好。显然,这不是开发方式,因为我需要定期启动新会话并每天创建新日志。
我如何授予 laravel 和 docker 容器写入它们创建的文件的权限?
Update: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,您可以使用 sub。 nginx 用于 Apache。
这似乎只是 OS X 的问题,实际上与 VirtualBox 有关,与 Docker 没有直接关系。我在 Docker v1.9.x 上遇到了这个问题,现在在 v1.10.3 上又遇到了这个问题。这次我无法使用上述解决方案解决它,但可以通过将缓存写入数据库来解决它。在本例中,它是 MySQL/MariaDB,但也可以很容易是 memcache 或 redis。
奇怪的是,即使该卷是单独安装的,但源自我的 Mac 的同一文件夹“/Users”,创建日志文件并写入它们也不是问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)