通过 php 按钮执行 python 脚本

通过 php 按钮执行 python 脚本

我在使用 PHP 上的按钮执行 Python 脚本时遇到问题。我查看了与我的问题相关的所有问题,并尝试了所有我能找到的答案,并将文件名修改为我自己的。这是我网站上的 PHP 代码:

    <FORM>
    <button type="button" onclick="parent.location='action.php'">open</button>
    </FORM>

PHP 代码将执行我编写的 Python 脚本:

    <?
       exec("python /var/www/open.py")
    ?>

网站可以运行,当我在终端上手动执行 Python 脚本时,它也可以运行。但是,当我尝试单击网站上的按钮时,什么也没有发生。我还更改了 sudoers 文件中的配置,以便 www-data 无需使用密码即可运行,并且还在 /var/www/open.py 上执行了 chmod gu+x。

还有什么我可能遗漏的吗?有人能帮我吗?

谢谢。

答案1

这可能只是 PATH 问题,因为用户 www-data 没有设置路径。尝试使用:

<?
   exec("/usr/bin/python /var/www/open.py")
?>

并查看是否有区别(/usr/bin/python首先使用 检查这是否是您的发行版的正确路径which python)。

答案2

有 2 条解决途径:

  1. 拿来http://my.site.com/action.php直接并确认代码以这种方式执行。以防出现一些 PHP 问题。

  2. SELinux:如果您的 SELinux 设置为“强制”,请尝试暂时禁用它以确认它不会妨碍:“setenforcing Permissive”。如果这能解决问题 - 您就知道需要进行调整。首先,我怀疑任何默认策略都会允许 /var/www 目录中的可执行脚本,请检查您的发行版的默认策略并找到适当的文件夹。/var/www/cgi-bin 可能是其中之一,也可能是系统范围的目录,如 /usr/local/bin 等。

答案3

有内置的 php 方法可以完成这项工作:shell_exec() 或 system()

相关内容