2014-10-18 329 views
1

我想在我的XAMPP服务器中执行一个python脚本,但每次我调用脚本时都会得到一个空白页。当我尝试在地址localhost/cgi-bin/script.py中执行它时,它工作正常,但是当我尝试在htdocs中执行它时,它会显示为空白。在我的htdocs目录中,我有2个文件:XAMPP-python脚本执行

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; 

?> 

最后的.py文件(script.py)在cgi-bin目录中:

#!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,我得到一个空白页。谢谢!

+0

阅读PHP exec的文档。 http://php.net/manual/en/function.exec.php它*不*返回执行的命令的完整输出。为什么你首先通过PHP运行python脚本?为什么不直接执行它? – deets 2014-10-18 13:44:55

+0

谢谢,这个问题真的是从PHP调用。 – 2014-10-18 15:08:24

回答

3

我认为问题在于您已启用安全模式,从而阻止在安全模式目录之外执行。请参阅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版本高于这个版本,它不适用于你。我建议也尝试在路径中正斜杠:system('python ../cgi-bin/script.py');

祝你好运。让我知道它是否有帮助。

+0

感谢您的反馈Yerke。你如何建议我打电话给我的脚本?我在这个东西是新的:s – 2014-10-18 14:34:34

+0

我解决了当我更改

到。我似乎你的猜测是正确的,我将永远不会再尝试从一个PHP文件调用。 – 2014-10-18 15:07:37