본문 바로가기
Web/PHP

[ Laravel ] Log 폴더 소유자 변경 permission Denied 문제

by 기저귀찬개발자 2020. 2. 12.

2019/09/03 - [Web/PHP] - [ Laravel ] permission denied 문제

 

이전 글에서 소개한 내용은 설치 후 storage 혹은 bootstrap 에서 오류가 났을때 수정방법이였다.

필요할 경우 참조하시길 바란다.

 

 

 

The stream or file "/home/laravel/xxx/storage/logs/laravel-2020-02-13.log" 
could not be opened: failed to open stream: Permission denied

 

라라벨의 Schedule 기능을 활용하여 스케쥴링 작업을 수행하고 있었는데 해당 부분에서 오류가 

발생하면 기존에 있던 www-data(웹서버)의 로그 파일을 소유자를 root로 변경시키는 것이다.

php artisan schedule 명령어를 root로 실행했기때문에 실행 중 오류 사항을 입력하는 주체가 

root가 되어서 소유 권한이 바뀌고 웹서버가 접근할 경우 생긴 문제다. 

 

오류 원인 

1. php artisan schedule 명령을 root가 실행

2. 다른 유저들이 같은 log 파일을 공유

 

해결 방법

각기 다른 유저들이 다른 Log 파일을 작성하도록 변경

 

 

 

/config/logging.php 로깅 관련 설정 파일을 연다

채널 clidaily 를 추가하고 실행 주체가 cli일 경우 채널 clidaily를 선택하도록 하였다.

다른 driver 설정도 가능하다.

 

<?php

use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;

return [

	//'default' => env('LOG_CHANNEL', 'daily'), //기존 설정값
    'default' => php_sapi_name() === 'cli' ? 'clidaily' : env('LOG_CHANNEL', 'daily'), // 추가


    'channels' => [

        'daily' => [
            'driver' => 'daily',
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
            'days' => 14,
        ],
        'clidaily' => [
            'driver' => 'daily',
            'path' => storage_path('logs/clilaravel.log'),		//clilaravel로 변경
            'level' => 'debug',
            'days' => 14,
        ],
    ],
];

 

 

 

로그파일을 살펴볼 경우 파일이 따로 쌓이는 모습을 볼 수 있다.

 

 

 

댓글