如何允许 PHP exec 重新加载 NGINX

如何允许 PHP exec 重新加载 NGINX

我如何在 PHP 中允许这些命令:

$output = exec('sudo nginx -t 2>&1');
$output2 = exec('sudo /usr/sbin/service nginx reload 2>&1');

我已经在终端中查看过sudo visudo,但似乎这样可以访问全部sudo 命令,而我只需要上面两个。

我猜重新加载并不是那么重要,因为我只需运行 cron 作业即可完成。

我正在使用 NGINX,Ubuntu 20 + PHP 7

答案1

您可以输入以下几行/etc/sudoers.d/nginx

www-data ALL = (root) NOPASSWD: /usr/sbin/nginx -t
www-data ALL = (root) NOPASSWD: /usr/sbin/service nginx reload

这将禁用运行时的密码提示sudo /usr/sbin/service nginx reload或以 身份登录时的其他命令www-data

www-data这假设您的 PHP 在用户下运行。

相关内容