简单的CGI python webserver + php不工作


Simple CGI python webserver + php not working

现在类似的问题在其他地方也被问到。然而,我已经尝试了建议的解决方案,它没有帮助。

我正在运行以下python CGI webserver:

#!/usr/bin/python
from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler
serve = HTTPServer(("",80),CGIHTTPRequestHandler)
serve.serve_forever()

在"cgi-bin"目录下,存放如下php文件"simple.php":

 #!/usr/bin/php
 <html>
 <head>
 <title>PHP Test</title>
 </head>
 <body>
 <?php echo '<p>Hello World</p>'; ?> 
 </body>
 </html>

该文件已被赋予可执行权限,并且仅从服务器上的命令行即可正确执行。

现在,如果我启动服务器并尝试使用"http://server/cgi-bin/simple.php"访问页面,我得到的只是一个空白页面,我没有看到服务器标准输出上的任何错误。

我查看了CGIHTTPServer.py的代码,我认为当一个进程被分叉以执行cgi-bin和使用dup2操纵文件描述符(stdin,stdout)时可能会发生问题。然而,我不知道如何让它工作。这个简单的事情已经让我困惑了几个小时,我真的很感激任何帮助。

服务器机器是ubuntu 9.04盒子

#!/usr/bin/php不会使您的脚本作为CGI运行;它使它作为命令行脚本运行。如果你有一个php-cgi二进制,用它来代替;否则,您可能不得不在脚本中插入一些令人讨厌的东西,如:

#!/usr/bin/php
Content-Type: text/html
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?> 
</body>
</html>

使用方法:handler.cgi_directories.append("/")

否则你的cgi脚本将被执行,如果他们是'/cgi-bin'或'/htbin'文件夹如下所述。基本上cgi_directories意味着从该文件夹和所有子文件夹执行cgi。希望对你有所帮助