php - 如何让 PHP 以 root 身份执行 Python3 脚本?
问题描述
我希望 PHP 执行 Python3 脚本。我已经做好了
$command = escapeshellcmd('pathtofile.py');
$output = shell_exec($command);
echo $output;
但是每当脚本运行时,我都会收到错误消息:Permission Denied
。
我正在运行一个 Web 服务器(Ubuntu 18.04 上的 Apache2),而 VPS 只有一个用户 root。
我也已经完成chmod +x path.py
并在 scipt 中添加了 shebang 行。
基本上,脚本在用户成功注册时运行。
解决方案
您必须在 sudoers 文件中添加 apache 用户,例如:www-data ALL=(ALL:ALL) NOPASSWD:ALL 然后您可以执行如下脚本:'sudo pathtofile.py'
或者您可以使用已编译的包装器。编写执行脚本的 C 程序,而不是编译它。比设置粘性位: chown root:root wrapper chmod a+rs wrapper
比在根组中包含 www-data 。现在可以从你的 php 脚本执行 wrapper,并且 wrapper 将以 root 身份执行 python 脚本。