简单的CGI Python网络服务器 + PHP不起作用
现在在其他地方也有人问过类似的问题。不过,我试过那里的建议解决方案,但并没有帮助。
我正在运行以下的 Python CGI 网络服务器:
#!/usr/bin/python
from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler
serve = HTTPServer(("",80),CGIHTTPRequestHandler)
serve.serve_forever()
在 "cgi-bin" 目录下,有一个名为 "simple.php" 的 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 被操作。不过,我不知道该怎么让它正常工作。这个简单的问题让我困扰了几个小时,非常希望能得到任何帮助。
服务器的操作系统是 Ubuntu 9.04。
2 个回答
0
使用方法:
handler.cgi_directories.append('/')
否则,你的cgi脚本只会在'/cgi-bin'或'/htbin'文件夹中执行,具体可以参考这里。简单来说,cgi_directories就是指从这个文件夹及其所有子文件夹中执行cgi脚本。希望这能帮到你。
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>