我是用的是mac+laravel做开发,php-fpm使用的用户和组是_www,
把laravel日志模式改成了daily,虽然storage/logs目录权限已经改成了777,但是每天新生成的日志文件并没有继承这个权限,导致laravel(php-fpm模式)无法写入log,并且不会抛出异常页面,为了解决这个问题,我把logs的所有者和组改成了_www, 但是又导致laravel cli模式的命令没有权限写入log日志而无法执行。
请教达人如何解决,有什么办法使用_www用户执行cli
我是用的是mac+laravel做开发,php-fpm使用的用户和组是_www,
把laravel日志模式改成了daily,虽然storage/logs目录权限已经改成了777,但是每天新生成的日志文件并没有继承这个权限,导致laravel(php-fpm模式)无法写入log,并且不会抛出异常页面,为了解决这个问题,我把logs的所有者和组改成了_www, 但是又导致laravel cli模式的命令没有权限写入log日志而无法执行。
请教达人如何解决,有什么办法使用_www用户执行cli
cli运行模式下,赋予www用户与组权限
class setUserAndGroup{
public $user = 'www';
public $group = 'www';
public function setUserAndGroup()
{
// get uid
$user_info = posix_getpwnam($this->user);
if(!$user_info)
{
return self::log( "Waring: User {$this->user} not exsits", true);
}
$uid = $user_info['uid'];
// get gid
if($this->group)
{
$group_info = posix_getgrnam($this->group);
if(!$group_info)
{
return self::log( "Waring: Group {$this->group} not exsits", true);
}
$gid = $group_info['gid'];
}
else
{
$gid = $user_info['gid'];
}
// set uid and gid
if($uid != posix_getuid() || $gid != posix_getgid())
{
if(!posix_setgid($gid) || !posix_initgroups($user_info['name'], $gid) || !posix_setuid($uid))
{
self::log( "Waring: change gid or uid fail.", true);
}
}
}
}
可以试试 配置log生成两个运行模式的文件
在bootstrap/app.php文件下加上
$app->configureMonologUsing(function(Monolog\Logger $monolog) {
$filename = storage_path('logs/laravel-'.php_sapi_name().'.log');
$handler = new Monolog\Handler\RotatingFileHandler($filename);
$monolog->pushHandler($handler);
});
$stream = new RotatingFileHandler($logPath, static::MAX_FILE, Logger::DEBUG, true, 0777);
可以自定义log,加0777的权限
2 回答1.6k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
2 回答1.1k 阅读
1 回答946 阅读
1 回答899 阅读
1 回答897 阅读
将_www加入root用户组,获取root用户组权限,就可以在cli模式下执行脚本
看了评论,是会有权限过高的问题
在logs是目录给_www可读写权限,
要在cli下执行使用_www用户登录,然后执行相应的操作