laravel storage/log 생성시 cors 이슈 해결 방법
설명 전)
처음에는 정상적으로 운영이 되다가 갑자기 front에서 cors 에러가 발생되었다면 먼저 디버깅을 해보고 원인이 확인이 안되신다면 laravel storage/log 권한 문제 확률이 높습니다.
1. storage 소유자와 권한을 확인합니다.
설명)
이건 예시이고 현재 laravel 권한자가 누구인지 확인하고 현재 storage 소유자와 동일한지 확인하시면 됩니다.
그리고 좌측에 권한을 확인해서 rwx 즉 읽기, 쓰기, 실행권한이 다 있는지 확인합니다.
읽기 권한만 있으면 cors 에러가 발생될 수 있습니다.
2-1. 소유권이 동일하지 않을 경우
- 소유권 변경 방법
sudo chown -R vagrant:vagrant ~/code/crypto-admin-backend/storage
설명)
여기서 vagrant 부분은 현재 소유권 name으로 변경하시고 위치는 현재 storage 위치를 넣으시면 됩니다.
2-2. 권한이 제한되어있을경우
- storage/log는 상황에 따라 다르겠지만 log를 주로 확인하는 목적으로 사용하신다면 개방적인 권한 설정을 한 것인데 우선 이해를 돕는 과정이니 추후에 권한을 변경해서 맞추시길 바랍니다.
sudo chmod -R 777 vagrant:vagrant ~/code/crypto-admin-backend/storage
3. config 기록이 남아있어서 변경된 것에 영향을 줄 수 있으므로 clear을 진행합니다.
php artisan config clear
4. config/logging.php custom 추가해서 RotatingFileHandler를 사용하여 로그 파일 관리하고 permission 옵션을 통해 파일 권한을 설정합니다.
'channels' => [
'stack' => [
'driver' => 'stack',
// 다른 채널 추가...
],
'custom' => [
'driver' => 'monolog',
'handler' => Monolog\Handler\RotatingFileHandler::class,
'with' => [
'filename' => storage_path('logs/laravel.log'),
'maxFiles' => 5,
'level' => Monolog\Logger::DEBUG,
'permission' => 0644,
],
],
// 다른 채널 설정...
],
설명)
Monolog는 composer 셋팅시 기본적으로 라이브러리가 셋팅이 됩니다. composer.json에 확인해보시면 "require":{ "monolog/monolog": ...} 설정된 것을 확인하실 수 있습니다.
5. 현재 문제가 발생되었던 log를 지우시고 다시 생성할 때 적용한대로 소유자 및 권한이 적용되어 있는지 cors에러가 발생되는 지 확인하시면 됩니다.