首页 > 解决方案 > 如何让 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 行。

基本上,脚本在用户成功注册时运行。

标签: phppython-3.xscriptingroot

解决方案


您必须在 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 脚本。


推荐阅读