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

2024-02-11

我有一个运行以下命令的 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(使用前将#替换为@)

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

  • 构建失败:获取 https://registry-1.docker.io/v2/microsoft/aspnetcore/manifests/1.1:未经授权:用户名或密码不正确

    我的 aspnetcore docker 项目已构建 但是当我单击 Docker 按钮 或按 F5 运行时 我得到 Severity Code Description Project File Line Suppression State
  • 为什么要使用 XML 解析器?

    I m a somewhat经验丰富的 PHP 脚本编写者 但是我只是专注于解析 XML 和所有这些好东西 我似乎无法理解为什么人们会使用单独的 XML 解析器而不是仅仅使用explode函数 看起来就这么简单 这是我一直在做的事情 假设路
  • PHP“按引用分配”的奇怪现象

    我发现了一个代码片段 其中包括 a b 但没有测试 b 是否确实存在 if isset b 我不确定 PHP 是如何处理这个问题的 所以我进行了一个快速的裸测试 现在我更加感兴趣了 a array a gt b x gt y b array
  • mysql数据库的“零知识”加密

    我一直在研究 Web 应用程序数据库层的加密 它使用MySQL 5 1 或更高版本 我记不清了 该应用程序由我的组织管理 为公共客户存储数据 最简单的选择是 AES ENCRYPT AES DECRYPT 如果坏人以某种方式访问 我的数据库
  • PHP 中的变量 $this 意味着什么?

    我看到变量 this一直用PHP 但我不知道它有什么用 我个人从未使用过它 有人可以告诉我变量如何 this在 PHP 中工作吗 它是对当前对象的引用 最常用于面向对象的代码中 参考 http www php net manual en l
  • 如何在PHP5.5上安装V8js?

    我想在 Ubuntu 12 04 上安装 PHP5 5 的 v8js 扩展 但无法使其工作 当我尝试使用 PECL 安装 v8js 扩展版本 0 2 0 最新 时 我收到以下消息 配置 错误 libv8 必须是版本 3 24 6 或更高版本
  • 为什么 Laravel 即使在本地环境也会重定向到 https?

    我正在开发 Laravel 5 5 版本 我有一个需要域才能执行的应用程序 这就是为什么 我在我的中添加了以下条目 etc hosts文件 以便我可以使用以下域打开我的应用程序仪表板 应用程序 dev or api application
  • Docker apache镜像,将日志存储在主机中?

    我使用 Docker 构建 Apache 映像 然后使用 docker compose 运行它 我设置了 Apache access log 和 error log 并希望将它们存储在容器外部 目前 我使用卷 但它将数据存储在容器和主机中
  • Magento 开源 2.3 - CSS 和 JS 未加载

    I installed Magento 2 3 successfully but when type http localhost Magento2 http localhost Magento2 I get a blank page li
  • Codeigniter 未连接到 SQL Server

    我正在尝试使用 CodeIgniter 连接到 SQL 服务器 如果我使用 sqlsrv 驱动程序 我会收到致命错误消息 如果我使用 odbc 驱动程序 我会收到 无法使用提供的设置连接到数据库服务器 错误消息 有谁知道如何解决这个问题 我
  • 使用 Wikipedia API 查找文章的主要类别

    我有一个文章列表 我想找到每篇文章的主要类别 维基百科在这里列出了它的主要类别 http en wikipedia org wiki Portal Contents Categories http en wikipedia org wiki
  • 你能帮助我更好地理解 PHP 类吗?

    我是一个学习速度很慢的人 我想在编码方面 我已经学习 PHP 几年了 但我仍然不理解类 所以是时候我付出一些努力 至少更好地理解它们了 我凡事都使用函数 人们经常在这里对我发表评论 他们不敢相信我有一个社交网站 而且我不使用课程 我真的不明
  • POST 数据加密 - HTTPS 足够吗?

    考虑一个场景 其中用户身份验证 用户名和密码 由用户在页面的表单元素中输入 然后提交 POST 数据通过 HTTPS 发送到新页面 其中 php 代码将检查凭据 现在 如果黑客位于网络中 并说可以访问所有流量 那么在这种情况下应用程序层安全
  • 更新 Composer 依赖项时 Artisan 命令出错

    我正在为 Laravel 开发一个库 其中包含一个服务提供者 我已将此库添加到另一个项目的composer json file The composer json 主项目 的文件包含以下脚本 scripts post root packag
  • 将 WooCommerce 属性标签替换为每个的自定义图像

    我正在做一个项目 我需要一些团体的帮助 我正在使用 woocommerce 产品系统 在商店存档页面产品上我显示属性标签 属性值 就像文本一样 属性标签 属性值 例如传输 手动 有没有办法将属性标签显示为图像 我无法添加 html 代码 i
  • 将变量从一个 jsp 发送到另一个 jsp

    我有一个 JSP 文件jsp 1 jsp和另一个 JSP 文件jsp 2 jsp 我已经包括了jsp 2 jsp in jsp 1 jsp using 现在我需要某个元素上的单击事件 在该事件中 我想将字符串变量传输到包含的 jsp 中 假
  • 如何在 Laravel 8 中实现记住我?

    我有一个登录表单和一个记住我复选框 我希望如果用户在上次登录时选中 记住我 复选框 则自动填写用户名和密码 但目前不起作用 我正在使用 Laravel 中构建的 LoginController 登录控制器
  • Docker 在 VS 中运行,但发布到 AWS 时出错?错误 CS5001:程序不包含适合入口点的静态“Main”方法

    我安装了适用于 Visual Studio 2017 V15 7 3 的 AWS 工具包 并使用 API 模板和 Linux docker 支持创建了一个新的空 Asp Net core 2 1 项目 我可以在 Visual Studio
  • 比在配置文件中以纯文本形式存储 mysql 密码更好的方法吗?

    许多 PHP 程序要求用户将 mysql 密码以纯文本 字符串或常量 形式存储在应用程序根目录的配置文件中 这一直困扰着我 这么多年过去了 还有更好的方法吗 到目前为止 我已经提出了两个最小的安全提升方案 使用 htaccess 中的规则使
  • 错误 1366 (HY000):整数值不正确:第 1 行的列“id”的“”[已关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 My code sql INSERT INTO static table name sql join array key

随机推荐