首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止laravel改变文件夹所有者

如何防止laravel改变文件夹所有者
EN

Stack Overflow用户
提问于 2021-09-02 14:56:34
回答 2查看 699关注 0票数 0

在Laravel项目中,我们不时会面临一个破坏性问题:

存储日志文件

代码语言:javascript
运行
复制
production.ERROR: Unable to create lockable file: /var/www/html/storage/framework/cache/data/... Please ensure you have permission to creto create files in this location.
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Filesystem/LockableFile.php(43)

当问题发生时,ls -l给出

代码语言:javascript
运行
复制
drwxrwsr-x+   2 apache   apache     4096 Sep  2 14:36 logs

为了解决这个问题,我们运行了sudo chown -R ec2-user:apache logs/,它提供

代码语言:javascript
运行
复制
drwxrwsr-x+   2 ec2-user   apache     4096 Sep  2 14:36 logs

但这是手动修复..。

因此,我想问:

( A) 如何防止文件系统突然改变所有者,从而破坏编码?

( B)或者,如何在Laravel项目中触发生产错误通知,以便就此类问题发出警告?

EN

回答 2

Stack Overflow用户

发布于 2021-09-02 15:22:34

对于第二个查询,您可以使用它们中的任何一个来报告错误:

  1. 哨兵
  2. 耀斑
  3. 蒲公英

所有异常都由App\Exceptions\Handler类处理,在这个类中,有一个名为寄存器的方法,您可以在其中配置上述任何工具,以便在那里报告异常。否则,您可以构建自定义报表方法,例如向您发送带有异常消息的电子邮件或发送松弛通知。

票数 1
EN

Stack Overflow用户

发布于 2021-09-08 15:04:59

要永久解决这个问题,您必须在代码中给予正确的权限,因此请转到config/logging.php,您将发现如下所示:

代码语言:javascript
运行
复制
    'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily'],
        'ignore_exceptions' => false,
    ],

    'single' => [
        'driver' => 'single',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
    ],

    'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'days' => 14,
    ],

    ...

],

'permission' => 0775,添加到所使用的通道,因此如下所示(我已将其添加到singledaily通道中):

代码语言:javascript
运行
复制
    'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily'],
        'ignore_exceptions' => false,
    ],

    'single' => [
        'driver' => 'single',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'permission' => 0775,
    ],

    'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'days' => 14,
        'permission' => 0775,
    ],

    ...

],

这种修复方法在Laravel 6上进行了测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69032679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档