XAMPP执行Python脚本
我正在尝试在我的XAMPP服务器上运行一个Python脚本,但每次调用这个脚本时,页面都是空白的。当我在地址localhost/cgi-bin/script.py中执行它时,一切正常,但在htdocs中执行时却是空白。在我的htdocs目录下,我有两个文件:
一个HTML文件:
<!DOCTYPE html>
<html>
<body>
<form name="input" action="http://localhost/insert.PHP" method="post">
User: <input type="text" name="user" value="Obama"><br>
Password: <input type="password" name="pass">
<input type="submit" value="Submit">
</form>
</body>
</html>
一个insert.php文件,用来调用.py文件执行:
<?php
$Nome = $_POST['user'];
$Password = $_POST['pass'];
echo ini_get("disable_functions");
$python = exec('C:\xampp\cgi-bin\script.py');
echo $python;
?>
最后是cgi-bin目录中的.py文件(script.py):
#!C:\Python27\python.exe
import cgitb
cgitb.enable()
print "Content-Type: text/html"
print
print """
<TITLE>CGI script</TITLE>
<H1> just fine !</H1>
"""
print " <p>I am a script in python! </p>"
所以我输入用户名和密码,它会重定向到insert.php,但我看到的还是空白页面。谢谢!
1 个回答
我觉得问题可能是你开启了安全模式,这样会限制在安全模式目录之外执行代码。你可以查看一下这个链接,了解更多关于这个功能的说明:http://php.net/manual/en/function.exec.php。
你也可以试试用system()这个函数来代替。
另外,我觉得从PHP调用Python脚本并不是个好主意。:)
编辑:
如果你是在开发环境中,我建议你可以试试以下步骤:
1) 把script.py文件复制到你的.php文件所在的目录。
2) 把.php文件中的exec那一行改成system('python script.py');
3) 如果这样可以运行,试着在cgi-bin目录中调用.py文件。如果cgi-bin目录在你的htdocs目录的上一级,可以试试system('python ..\cgi-bin\script.py');
我在我的电脑上无法测试,因为我用的是Mac。
4) 我查看了一下安全模式的说明,发现它在PHP 5.4.0版本中被移除了。所以如果你的PHP版本高于这个,应该就没有这个问题了。
5) 我还建议你在路径中使用正斜杠:system('python ../cgi-bin/script.py');
祝你好运。如果有帮助的话,请告诉我。