我有一个运行以下命令的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容器写入其创建的文件的权限?
更新:这是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的Apache。
对于OS X来说,这似乎只是一个问题,而这个问题实际上与VirtualBox有关,与Docker没有直接关系。Docker v1.9.x出现了这个问题,现在v1.10.3出现了这个问题。这次,我无法使用上述解决方案来解决它,但是能够通过将缓存写入数据库来解决它。在这种情况下,它是MySQL / MariaDB,但很可能是内存缓存或Redis。
奇怪的是,即使该卷是单独安装但起源于我Mac的同一文件夹“ / Users”,创建日志文件并写入日志也不是问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句