我正在使用symfony 3进行项目, 该项目在 nginx 服务器上运行 我正在尝试使用以下命令重新加载配置文件: "SystemCTL reload nginx"从控制器。
/**
* @Route("/testReloadConfig")
*/
public function testReloadConfigAction(Request $request){
$output = [];
$result = null;
$cmd = 'systemctl reload nginx 2>&1';
exec($cmd, $output, $result);
return new JsonResponse([
'result' => $result,
'output' => $output,
]);
}
响应:{"结果":1,">输出":["无法重新加载nginx.service:
需要交互式身份验证.","有关详细信息,请参阅系统日志和\u0027systemctl状态nginx.service\u0027。
很可能nginx
不能与用户root
一起运行,这是您需要使用systemctl
的。因此,您应该使用sudo
执行命令。
现在有不同的方法可以从具有root
权限的Web服务器运行命令:
- 使用用户
root
运行nginx
,出于明显的安全原因,强烈建议不要这样做 - 仅将此特定命令添加到
sudoers
,如此处所述,以便以root
权限运行它,而无需任何密码提示 - 按照此处所述通过
echo
传递您的root
密码 - 编写具有有限函数的 bash 脚本,如下所述
但是,当然,您可能会发现其他东西正在寻找它。