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,
],
],
];
로그파일을 살펴볼 경우 파일이 따로 쌓이는 모습을 볼 수 있다.
'Web > PHP' 카테고리의 다른 글
[ PHP ] Editplus, Atom Tab을 공백문자로 입력시키기 (0) | 2020.02.27 |
---|---|
[ Laravel ] paginate 에 현재 쿼리 스트링 첨부하기 (1) | 2020.01.22 |
[ Laravel ] Composer Cannot allocate memory error - Fixed (0) | 2020.01.09 |
[ Laravel ] 라온 보드 설치시 preg_match 오류 해결 (1) | 2020.01.02 |
[ Laravel ] DB Log 출력하기 (0) | 2019.11.18 |
댓글