【问题标题】:xampp ubuntu laravel The stream or file "/storage/logs/laravel log" could not be opened: failed to open stream: Permission deniedxampp ubuntu laravel 无法打开流或文件“/storage/logs/laravel log”:无法打开流:权限被拒绝
【发布时间】:2019-09-10 04:58:35
【问题描述】:

在我在 ubuntu 上安装的 xampp 上安装了 laravel。在浏览器中打开它。得到错误:

无法打开流或文件 /storage/logs/laravel 日志:无法打开流:权限被拒绝

如何解决? (我已经找到答案了,马上贴出来)

【问题讨论】:

  • 通常 laravel 安装在宅基地上,在 vagrant 上,因此所有答案都是关于这些平台的,我添加了价值 - 关于 xampp+ubuntu 上 laravel 的答案

标签: laravel apache ubuntu xampp


【解决方案1】:

添加到composer.json

    "scripts": {
    "post-install-cmd": [
          "chgrp -R www-data storage bootstrap/cache",
          "chmod -R ug+rwx storage bootstrap/cache"
     ]
}

然后运行 ​​composer install 或 update 解决您的问题

【讨论】:

  • 你自己在ubuntu+xampp上试过了吗?我刚刚尝试并得到了错误:chgrp: changing group of 'storage/framework/testing/.gitignore': Operation not permitted。这是因为 composer 是在用户权限下运行的,而不是以 root 身份运行(并且 composer 文档强烈反对以 root 身份运行它),但是 chgrp 命令需要 root 权限。因此,这是行不通的
  • 顺便说一句,我为什么要把组改为www-data?在 ubuntu 上的 xampp 中,apache 在 rootdaemon 用户下运行。我刚刚运行了groups daemon,它显示daemon 用户不属于任何www-data 组。这是什么www-data?你能解释一下吗?
  • 顺便说一句,我刚刚尝试直接运行sudo chown -R www-data storage/,你知道吗 - 它也没有帮助。
  • sudo chgrp -R www-data storage/ 也无济于事
  • web 用户组是 www-data,因此您将 web 目录文件的所有权更改为 www-data 所有权。在作曲家或终端中尝试这两个命令并正常工作。
【解决方案2】:

问题是运行 apache 的用户无权访问该文件夹。在 ubuntu 上的 xampp 中,主 apache 进程的用户是 root。但 apache 工作人员在 daemon 用户下运行。解决方案是授予daemon 访问/storage 目录的权限。 (如果您只授予/storage/logs,那么您将修复此错误,但同级目录也会出现同样的错误。因此storage 本身的文件夹:

sudo chown -R daemon /path-to-your-project/storage

现在daemon 用户可以访问此文件夹(您没有但需要它吗? 如果您有更好的解决方案,请随时在这里分享!

【讨论】:

    猜你喜欢
    • 2019-08-09
    • 2018-07-08
    • 2020-03-18
    • 2018-05-06
    • 2018-10-03
    • 2020-06-16
    • 2021-10-03
    • 2021-05-21
    • 1970-01-01
    相关资源
    最近更新 更多