>  기사  >  PHP 프레임워크  >  laravel에서 생성된 로그에 권한이 없는 이유는 무엇입니까?

laravel에서 생성된 로그에 권한이 없는 이유는 무엇입니까?

PHPz
PHPz원래의
2023-04-12 09:13:41683검색

Laravel은 개발자가 안전하고 안정적이며 유지 관리가 쉬운 웹 애플리케이션을 신속하게 구축할 수 있도록 풍부한 기능과 도구를 제공하는 널리 사용되는 PHP 프레임워크입니다. Laravel에 내장된 로깅 기능을 통해 개발자는 분석 및 문제 해결을 위해 애플리케이션 실행 로그를 파일에 저장할 수 있습니다. 그러나 경우에 따라 Laravel에서 생성된 로그 파일에 권한 문제가 발생하여 제대로 출력되지 않을 수 있습니다.

라라벨이 권한 없이 로그 파일을 생성하는 이유는 파일 저장 위치에 대한 권한이 부족하기 때문입니다. 이 문제를 해결하기 위해 다음 방법을 사용할 수 있습니다:

  1. 저장 위치 권한 조정

기본적으로 Laravel 로그 파일은 Storage/logs 디렉터리에 저장됩니다. PHP 프로세스가 디렉토리에서 쓰고 읽을 수 있도록 디렉토리에 대한 권한이 충분한지 확인해야 합니다. 터미널에서 다음 명령을 실행하여 디렉터리의 권한을 설정할 수 있습니다.

chmod -R 775 storage/logs

775 권한 설정을 사용하면 소유자 및 그룹 사용자는 디렉터리를 읽고, 쓰고, 실행할 수 있으며, 다른 사용자는 읽고 실행만 할 수 있습니다.

  1. Laravel 로그 저장 위치 변경

기본 저장 위치를 ​​사용하지 않으려면 구성 파일을 통해 저장 위치를 ​​수정할 수 있습니다. config/logging.php 파일을 열고 로그에서 경로 옵션을 찾아 지정된 저장 경로로 수정합니다.

'log' => env('APP_LOG', 'single'),
    'path' => '/your/folder/path/logs/laravel.log',
    'level' => env('LOG_LEVEL', 'debug'),
    'channels' => [
        // ...
    ],
  1. Laravel 로그를 캡처하여 데이터베이스에 저장합니다.

파일 대신 Laravel 로그를 캡처하여 데이터베이스에 저장할 수 있습니다. 이 방법을 사용하면 파일 권한 문제를 방지하고 로그 분석 및 통계를 용이하게 할 수 있습니다.

다음 작업을 수행해야 합니다.

  • 로그 데이터를 저장할 데이터베이스에 로그 테이블을 생성합니다.
  • app/Providers/AppServiceProvider.php 파일에 로그 인터페이스 구현을 등록합니다.
  • config/를 수정합니다. 로깅.php 파일의 구성에서 로그 옵션을 데이터베이스로 설정하십시오.

첫 번째 단계, 로그 테이블 만들기

CREATE TABLE `logs` (
    `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    `channel` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
    `level` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
    `message` text COLLATE utf8mb4_unicode_ci NOT NULL,
    `context` text COLLATE utf8mb4_unicode_ci NOT NULL,
    `extra` text COLLATE utf8mb4_unicode_ci NOT NULL,
    `created_at` datetime(6) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

두 번째 단계, AppServiceProvider 등록

app/Providers/AppServiceProvider.php 파일에 다음 코드 추가:

use Illuminate\Support\Facades\Log;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;

public function boot()
{
    $logger = new Logger('laravel');
    $logger->pushHandler(new StreamHandler(storage_path('logs/laravel.log'), Logger::DEBUG));

    Log::listen(function ($level, $message, $context) use ($logger) {
        $logger->$level($message, $context);
    });
}

세 번째 단계, 구성/로깅 수정 .php 파일

유사하게 config/logging.php 파일의 구성을 수정하고 로그 옵션을 데이터베이스로 설정하세요:

'log' => 'database',
'channels' => [
        // ...
    ],

위의 세 가지 방법은 개발자가 Laravel에서 생성된 로그 파일에 대한 권한이 없는 문제를 해결하는 데 도움이 될 수 있습니다. 세 번째 방법을 사용하면 개발자가 애플리케이션 로그 정보를 더 잘 관리하고 분석할 수 있습니다.

위 내용은 laravel에서 생성된 로그에 권한이 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.