LoginSignup
1
0

More than 3 years have passed since last update.

Laravel(5.7)のDeployer利用時のログファイルの問題

Last updated at Posted at 2019-08-30

Deployerを利用してLaravelをデプロイするとデプロイユーザーの設定によってログファイルのPermissionエラーが発生します。

サーバーでの対応

ユーザーのGroup設定やファイルが作成する時のディフォルトPermissionの設定を変える等で対応はできると思いますが、ユーザーの設定ができないサーバーを利用していると難しいと思います。また、設定が面倒と考える方もいると思います。

ConsoleとHttpのログファイルを分ける

logging.phpのtapの設定を行います。

config/logging.php
        'daily' => [
            'driver' => 'daily',
            'path' => storage_path('logs/laravel.log'),
            'level' => 'debug',
            'days' => 7,
            'tap' => [App\Logging\SapiLogTap::class],
        ],

ファイル名を分けるクラースを作成します。

app/Loggin/SapiLogTab.php
<?php

namespace App\Logging;

use Monolog\Handler\RotatingFileHandler;

/**
 * ログファイルを出力する
 */
class SapiLogTap
{
    /**
     * ログファイル名にインターフェイスの型を入れる
     *
     * @param  \Illuminate\Log\Logger $logger
     * @return void
     */
    public function __invoke($logger)
    {
        foreach ($logger->getHandlers() as $handler) {
            if ($handler instanceof RotatingFileHandler) {
                // ログハンドラーがRatationFileHandlerの場合
                // PHPの間のインターフェイスの型を取得
                $sapi = php_sapi_name();
                // ファイルのフォーマットを定義
                $handler->setFilenameFormat("{filename}-$sapi-{date}", 'Y-m-d');
            }
        }
    }
}

ファイルのPermissionの変更

設定ファイルの修正でできるようです(検証しておりません)。参考

config/logging.php
    'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'days' => 7,
        'permission' => 0664,    // this line lets the file owner to be www-data:www-data
    ],
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0