php - 如何让当前用户执行 Laravel 命令?
问题描述
我正在尝试构建一个自定义配置,该配置会在启动时添加到我的 Laravel 配置中。我创建了一个工匠命令,允许开发人员将服务器置于“测试”模式和“实时”模式。这应该会强制 API 使用测试密钥,而不是可以正常工作的实时密钥。
public function handle()
{
switch(strtoupper($this->argument('m'))) {
case 'LIVE':
\DB::table('server_mode')->where('id', 1)->update([
'mode' => true,
'verified_by' => 'Server'
]);
$this->info('Server is now in LIVE mode');
break;
case 'TEST':
\DB::table('server_mode')->where('id', 1)->update([
'mode' => false,
'verified_by' => 'Server'
]);
$this->info('Server is now in TEST mode');
break;
default:
$this->error('Please enter either LIVE or TEST');
break;
}
}
问题是,我想添加哪个开发人员更改了状态。到目前为止,它被硬编码为“服务器”。是否可以获得执行命令的IP或PC信息存储在数据库中?
解决方案
正如评论中所说,Jaquarh 不会尝试进行身份验证。他只想获取运行命令的人的用户名。
您可以使用$processUser = exec('whoami');
来获取当前用户名。(它不会在 Windows 上工作)
但是,请注意,用户名并不总是非常有用。我的工作笔记本电脑预装了用户名“User”。
我可以建议的另一个想法是在使用命令时强制使用“名称”参数。
推荐阅读
- ios - BGProcessingTaskRequest 在 iOS 14.8 上调用过期处理程序之前仅运行 295 秒
- git - 用Git组织一个与Hostinger相关的项目
- angular - 如何在当前路径中保存“窗口历史状态”?
- r - 从 R 中的函数中提取 T 统计量
- python - 将文本文件读入列表列表,无需额外空格或 '\n'
- gradle - gradle + codebuild:无法通过代理访问网络
- firefox - 视频父级上的 Firefox 点击事件不起作用
- timer - 在 LabVIEW 的每种情况下,如何更改 while 循环中的滑块值?
- django - Django JSONField 复杂查询...查询复杂嵌套数据结构的实例
- amazon-s3 - 将 AWS cloudwatch 日志导出到 S3