当前位置: 首页 > 知识库问答 >
问题:

拉雷维尔5:拉雷维尔。无法打开日志:权限被拒绝

寇甫
2023-03-14

要从一开始就阻止您,没有权限问题/存储是递归的chmoded 777,整个项目文件夹由apache:apache存储

我甚至将日志文件重命名为-old和apache创建了一个新的。。。如果它没有实际的写权限,就不允许它创建它。

在CentOS 6.6版(最终版)下运行

从git部署了这个项目,这个家园为我的同事工作。

完全错误:

[2015年5月18日星期一10:17:58][error][client 86.124.208.14]PHP致命错误:未捕获异常“UnexpectedValueException”,消息为“流或文件”/var/www/vhosts/mapper.pavementlayers.com/storage/logs/laravel-2015-05-18.log“无法打开:无法打开流:权限被拒绝”。铺路层。com/vendor/monolog/monolog/src/monolog/Handler/StreamHandler。php:84\n堆栈跟踪:\n#0/var/www/vhosts/mapper。铺路层。com/vendor/monolog/monolog/src/monolog/Handler/RotatingFileHandler。php(88):Monolog\Handler\StreamHandler-

共有3个答案

荣轶
2023-03-14

这对我有效,Laravel 5.4及以上

$ sudo chmod -R 755 storage/

$ sudo chown -R www-data storage/

$ sudo chgrp -R www-data storage/

$ php artisan cache:clear

$ php artisan config:cache

$ composer dumpautoload

并非所有步骤都是必要的。

危文乐
2023-03-14

尝试这些命令laravel 5

$ php artisan cache:clear 

$ sudo chmod -R 777 app/storage 

$ composer.phar dump-autoload

发生这种情况是因为laravel没有写入日志文件的权限,至少对我来说是这样。

濮阳原
2023-03-14

可能是SElinux阻止Apache创建此文件。

测试这一点,可以使用以下命令暂时禁用SElinux:

setenforce 0

这将使SElinux处于许可模式。这意味着您仍然会在SElinux日志文件中收到错误消息,但SElinux不会阻止该命令。

要再次激活SElinux,您可以键入:

setenforce 1

或重新启动CentOS服务器。

不幸的是,我在CentOS上也遇到了拉威尔5号的问题,原因是塞利努克斯。我最终禁用了SElinux。我知道这不是正确的做法,但我还没有时间让这两个人一起工作!

因此,我终于有时间进一步调查了这一点,我让SELinux与Laravel 5合作。我刚刚为可能遇到这个问题的人更新了这篇文章。如上所述,禁用SELinux不是最佳策略。

需要做三件事:

>

  • 文件夹存储和引导/缓存需要具有正确的SELinux上下文。这可以通过以下命令实现:

    semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/<Laravel Site>/storage(/.*)?"
    
    semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/<Laravel Site>/bootstrap/cache(/.*)?"
    

    SELinux上下文需要应用于以下目录:

    restorecon -Rv "/var/www/<Laravel Site>/storage"
    
    restorecon -Rv "/var/www/<Laravel Site>/bootstrap/cache"
    

    Apache用户需要有权在两个目录中创建文件。这可以通过CentOS 7中的ACL实现:

    setfacl -R -m u:apache:rwX storage/
    
    setfacl -R -m u:apache:rwX bootstrap/cache/
    

    您需要做的最后一件事是再次启用SELinux。

  •  类似资料:
    • 我在本地运行的Laravel应用程序中有一个登录页面,但在生产服务器上,我收到以下错误消息(Laravel.log) 在应用/存储/视图/8d74d14da5e7fbd7b4984adefddd5a1b中生成的代码是: 有什么想法吗? 谢谢你

    • 所以我正在尝试为我的网站实现一个支付解决方案,经过相当多的研究,我仍然缺乏一个完整的解决方案。我正在运行Laravel 5.0,需要一般购物车付款功能。我想我会发布这篇文章,试图创建一个参考,以帮助其他可能有这个问题的人。我已经把测试事务放到了Paypal的沙箱中,这似乎是砖墙的所在,但是一个完整的概述会很有帮助。我将列出我需要克服的问题,以便解决一些问题。 完成支付解决方案实施需要解决的问题 >

    • 我在中编写查询时遇到问题。 我的疑问是 现在我想把这个查询转换成laravel eloquent。

    • 在laravel项目中查看composer.json文件,我可以找到以下内容 据我所知,App\:“App/”表示以App开头的名称空间在App/目录下有其源文件,它位于psr-4之后。 但是,在供应商目录下有成吨的包,例如以Illumb.开头的包。。它们在psr-4或类地图下吗?为什么它们没有在作曲者中声明。json文件?

    • 我插入如下字段: 但在SQLite中,默认值是“CURRENT_TIMESTAMP”,它不起作用(不替换为当前日期)。字段必须具有值CURRENT_TIMESTAMP,然后才能工作。这可以在拉维尔完成吗?