简单的CGI python webserver + php无法正常工作

时间:2011-07-14 19:02:22

标签: php python webserver

现在其他地方也提出了类似的问题。但是,我在那里尝试了建议的解决方案,但没有帮助。

我正在运行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”访问该页面,我只得到一个空白页面,我在服务器stdout上看不到任何错误

我查看了CGIHTTPServer.py的代码,我认为当一个进程分叉执行cgi-bin并且使用dup2操作文件描述符(stdin,stdout)时可能会出现问题。但是,我不知道如何让它发挥作用。这个简单的事情让我困惑了几个小时,非常感谢任何帮助。

服务器机器是ubuntu 9.04盒子。

2 个答案:

答案 0 :(得分:3)

#!/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>

答案 1 :(得分:0)

使用:    handler.cgi_directories.append( '/')

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