我在使用 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 条解决途径:
拿来http://my.site.com/action.php直接并确认代码以这种方式执行。以防出现一些 PHP 问题。
SELinux:如果您的 SELinux 设置为“强制”,请尝试暂时禁用它以确认它不会妨碍:“setenforcing Permissive”。如果这能解决问题 - 您就知道需要进行调整。首先,我怀疑任何默认策略都会允许 /var/www 目录中的可执行脚本,请检查您的发行版的默认策略并找到适当的文件夹。/var/www/cgi-bin 可能是其中之一,也可能是系统范围的目录,如 /usr/local/bin 等。
答案3
有内置的 php 方法可以完成这项工作:shell_exec() 或 system()