计划任务写入日志为什们是 root 用户?

计划任务写入日志为什们是root用户,导致其他地方写入失败.

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案
usage:  crontab [-u user] file
        crontab [ -u user ] [ -i ] { -e | -l | -r }
                (default operation is replace, per 1003.2)
        -e      (edit user's crontab)
        -l      (list user's crontab)
        -r      (delete user's crontab)
        -i      (prompt before deleting user's crontab)

你知道怎么办了吧

4年前 评论
讨论数量: 6
panda-sir

....首先你写日志是root用户 是你肯定在root用户下crontab -e了 其次你说的写入失败应该不可能 root本身就代表最高权限

4年前 评论
kiti 4年前

其他地方你指的应该是php-fpm,你的计划任务使用root用户,当root用户需要写入新日志时,没有文件时,就由root创建,此时你的web程序就没有写入权限。解决办法,是指定crontab的执行用户,这个自行搜索答案

4年前 评论
usage:  crontab [-u user] file
        crontab [ -u user ] [ -i ] { -e | -l | -r }
                (default operation is replace, per 1003.2)
        -e      (edit user's crontab)
        -l      (list user's crontab)
        -r      (delete user's crontab)
        -i      (prompt before deleting user's crontab)

你知道怎么办了吧

4年前 评论

www 用户不具备执行命令行的权限

4年前 评论

crontab -u user -e

4年前 评论

可以在生成日志文件的时候把权限改成777

把这段文字加在 bootstrap/app.php里面

$app->configureMonologUsing(function (Monolog\Logger $monolog) {
    $filename = storage_path('logs/cli/laravel.log');

    // The maximal amount of files to keep (0 means unlimited)
    $maxFiles = config('app.log_max_files', 30);
    $levelString = config('app.log_level', 'debug');
    $levels = [
        'debug' => \Monolog\Logger::DEBUG,
        'info' => \Monolog\Logger::INFO,
        'notice' => \Monolog\Logger::NOTICE,
        'warning' => \Monolog\Logger::WARNING,
        'error' => \Monolog\Logger::ERROR,
        'critical' => \Monolog\Logger::CRITICAL,
        'alert' => \Monolog\Logger::ALERT,
        'emergency' => \Monolog\Logger::EMERGENCY,
    ];
    $level = \Monolog\Logger::INFO;
    if (isset($levels[$levelString])) {
        $level = $levels[$levelString];
    }

    // LineFormatter
    $lineFormatter = new Monolog\Formatter\LineFormatter(null, null, true, true  
    );

    // default file permission.
    $permission = 0777;
    $rotatingFileHandler = new Monolog\Handler\RotatingFileHandler($filename, $maxFiles, $level, true, $permission);
    $rotatingFileHandler->setFormatter($lineFormatter);
    $monolog->pushHandler($rotatingFileHandler);
});
4年前 评论

因为www 用户在linux下默认是没有cli 执行权限的,如果crontab 用www 需要将 这部分权限开启

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!