laravelで生成されたログに権限がないのはなぜですか?

PHPz
リリース: 2023-04-12 09:54:44
オリジナル
686 人が閲覧しました

Laravel は、開発者が安全で信頼性が高く、保守が容易な Web アプリケーションを迅速に構築できる豊富な機能とツールを提供する、広く使用されている PHP フレームワークです。 Laravel の組み込みログ機能を使用すると、開発者は分析やトラブルシューティングのためにアプリケーション実行ログをファイルに保存できます。ただし、場合によっては、Laravel によって生成されたログ ファイルに権限の問題が発生し、正しく出力されないことがあります。

Laravel がログファイルを勝手に生成してしまう原因は、ファイルの保存場所の権限が不十分であることが考えられます。この問題を解決するには、次の方法を使用できます。

  1. ストレージ場所のアクセス許可を調整する
#デフォルトでは、Laravel ログ ファイルは storage/logs ディレクトリに保存されます。 。ディレクトリに対する権限が、PHP プロセスがディレクトリに対して書き込みおよび読み取りを行うのに十分であることを確認する必要があります。ターミナルで次のコマンドを実行して、ディレクトリのアクセス許可を設定できます。

chmod -R 775 storage/logs
ログイン後にコピー
775 アクセス許可設定では、所有者およびグループ ユーザーはディレクトリの読み取り、書き込み、実行が許可され、他のユーザーは読み取りと実行のみが可能です。実行する。

    Laravel ログの保存場所を変更する
デフォルトの保存場所を使用したくない場合は、構成ファイルを使用して保存場所を変更できます。 config/logging.php ファイルを開き、ログ内のパス オプションを見つけて、指定されたストレージ パスに変更します。

'log' => env('APP_LOG', 'single'),
    'path' => '/your/folder/path/logs/laravel.log',
    'level' => env('LOG_LEVEL', 'debug'),
    'channels' => [
        // ...
    ],
ログイン後にコピー
    Laravel ログをキャプチャしてデータベースに保存する
Laravel ログをファイルではなくデータベースにキャプチャして保存できます。この方法により、ファイルのアクセス許可の問題を回避し、ログの分析と統計を容易にすることができます。

次の操作を実行する必要があります:

    ログ データを保存するためにデータベースにログ テーブルを作成します;
  • app/Providers/AppServiceProvider.php でファイルにログ インターフェイスの実装を登録します。
  • config/logging.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;
ログイン後にコピー
2 番目のステップ、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);
    });
}
ログイン後にコピー

3 番目のステップは、config/logging.php ファイルを変更することです

config/logging.php ファイル内の構成も変更し、ログ オプションをデータベースに設定します:

'log' => 'database',
'channels' => [
        // ...
    ],
ログイン後にコピー

上記の 3 つの方法は、開発者が Laravel によって生成されたログ ファイルにアクセス許可がない問題を解決するのに役立ちます。3 番目の方法では、開発者がアプリケーションのログ情報をより適切に管理および分析できるようになります。

以上がlaravelで生成されたログに権限がないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート