现在其他地方也有人问过类似的问题。但是,我已经尝试了那里建议的解决方案,但没有帮助。
我正在运行以下 python CGI 网络服务器:
#!/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 的代码,我认为当进程被 fork 以执行 cgi-bin 并且文件描述符(stdin、stdout)使用 dup2 进行操作时,可能会出现问题。但是,我不知道如何让它工作。这个简单的事情让我困惑了几个小时,非常感谢任何帮助。
服务器机器是一台 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>
关于php - 简单的 CGI python 网络服务器 + php 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6698554/