Laravel 파일 권한 문제

6310 단어 FileLaravelpermission

문제 발생!!


회사 업무에서 응용 프로그램의 속도를 높이기 위해 DB에서 메인 테이블의 모델을 가져와 캐시에 저장하는 방법을 사용했다.웹 페이지의 속도가 상당히 좋아서 Cache를 사용하는 것이 좋다고 생각하지만, 문제가 발생했습니다!!OTZ

사용자 구성

  • 일괄 처리 실행 사용자:ec2-user
  • 웹 페이지(Apache) 사용자:apache
  • ec2-user의 하위 그룹에 아파치가 추가되었습니다
  • 똑같이 만든 Cache를 대량으로 사용하면 권한 오류가 발생합니다.읽기에 문제가 없음(?)인터넷에서 만든 디렉토리가 755인 경우 배치 실행 사용자가 새 파일을 만들 수 없는 오류가 발생했습니다.

    해결 방법


    로그 파일


    자세한 내용:https://qiita.com/FattyRabbit/items/fff02397647d54458871
    config/logging.php
            'single' => [
                'driver' => 'single',
                'path' => storage_path('logs/laravel.log'),
                'level' => 'debug',
                'permission' => 0664,
            ],
    
            'daily' => [
                'driver' => 'daily',
                'path' => storage_path('logs/laravel.log'),
                'level' => 'debug',
                'days' => 14,
                'permission' => 0664,
            ],
    

    스토리지 외립면 사용 시


    Laravel은 Fly system이라는 PHP 패키지를 사용한 것 같습니다. 한번 봅시다!
    https://flysystem.thephpleague.com/docs/adapter/local/
    $adapter = new Local(
        __DIR__.'/path/to/too',
        LOCK_EX,
        Local::DISALLOW_LINKS,
        [
            'file' => [
                'public' => 0744,
                'private' => 0700,
            ],
            'dir' => [
                'public' => 0755,
                'private' => 0700,
            ]
        ]
    );
    
    그런 것 같습니다.
    vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php의createLocalDriver 방법에permissions가 있기 때문에'config/filesystems.php'를 수정했습니다.
    config/filesystems.php
            'local' => [
                'driver' => 'local',
                'root' => storage_path('app'),
                'permissions' => [
                    'file' => [
                        'public' => 0764,
                        'private' => 0700,
                    ],
                    'dir' => [
                        'public' => 0775,
                        'private' => 0700,
                    ]
                ]
            ],
    

    이외에도 (신속 진행시)


    AppServiceProvide.이것은 php에umask를 쓰는 약간 개의치 않는 방법이다.
    app/Providers/AppServiceProvide.php
        public function boot()
        {
            umask(0002);
        }
    
    이런 느낌이에요.우선 캐시의 문제는 이 방법으로 해결되었다.아쉽다!!!!!
    'Illuminate\Cache\Cache Manager:createFileDriver'에서'FileStore'를 사용하지만, 설정 파일의 path만 전달하고'\$this->files->makeDirectory'또는'\$this->files->put'등을 사용합니다.makeDirectory는 권한을 설정했지만 umask의 영향을 받은 것 같습니다.

    *** 추가: 2019.11.14
    레벨 캐시 파일 권한 설정

    좋은 웹페이지 즐겨찾기