现在类似的问题在其他地方也被问到。然而,我已经尝试了建议的解决方案,它没有帮助。
我正在运行以下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。希望对你有所帮助