我有一个执行以下操作的 PHP 脚本:
$output = exec('sudo nginx -t 2>&1');
echo $output;
正如预期的那样,由于使用了 sudo
命令,它返回以下内容:
sudo: no tty present and no askpass program specified
但是,我可以在终端 php /var/www/html/script.php
中运行 PHP,并且无需提示输入 sudo 密码即可运行。
有人告诉我,我在我的系统上以 root 身份运行 PHP,这很危险。
然而,我所做的只是跟着这个tutorial - 它真的那么危险吗?
此外,如果我使用 Cron 作业 来运行 PHP 脚本,它会完美运行
我在 Ubuntu 20.04 + PHP 7 上使用 NGINX
答案 0 :(得分:3)
当您运行 php /var/www/html/script.php
时,您在当前用户(最有可能在 php
组中)下运行 sudoers
进程。
Ubuntu 默认 sudo 密码超时为 15 分钟。这意味着,如果您的用户(也运行 PHP 脚本的用户)在 15 分钟前输入了 sudo 密码,系统将不会再次要求输入。