我的.py文件在终端中执行正常,但在浏览器中出现此错误
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
...
...
这是.py文件:
#!/usr/bin/python
import cgi
import cgitb; cgitb.enable()
print "Content-Type: text/html\n\n" # HTML is following
print # blank line, end of headers
print "<TITLE>CGI script output</TITLE>"
print "<H1>This is my first CGI script</H1>"
print "Hello, world!"
我应该将其保存为.cgi文件吗?我尝试过相同的错误,我尝试了很多像这样的文件,没有工作,我确信apache服务器正在运行,因为有其他.cgi脚本从同一目录运行而没有问题。
我也尝试过: #!/ usr / local / bin / python&amp; #!的/ usr / bin中/本地/蟒蛇
任何帮助表示感谢。
EDIT 错误日志输出: (2)没有这样的文件或目录:'... / ... / ... / test.py'的执行失败 脚本标题的提前结束:test.py
答案 0 :(得分:0)
这是我刚才写的东西。在对Python CGI进行故障排除时,这些是一些很好的选择。
有一些提示让Python在CGI中工作。
Apache设置:这可能是旧的
通过修改配置中的以下内容将python添加为CGI:
Options Indexes FollowSymLinks ExecCGI
AddHandler cgi-script .cgi .py
始终通过Apache浏览页面。 请注意,通过浏览器查看文件系统中的文件适用于html页面上的大多数内容,但不适用于CGI。要使脚本工作,必须通过htdocs文件系统打开它们。浏览器的地址行应如下所示:
\\127.0.0.1\index.html or
\\localhost\index.html
如果通过文件系统打开文件,CGI将无法运行。例如,如果它位于浏览器的位置栏中:
c:\Apache\htdocs\index.html (or some other example location)
将脚本行的结尾转换为Unix格式: 大多数编辑都有“显示行尾”的选项,然后是从Unix转换为PC格式的工具。您必须将行的结尾设置为Unix格式。
在CGI脚本的第一行说明Python解释器的路径: 您必须具有以下行之一作为Python CGI脚本的第一行:
#!C:\Python25\Python.exe
#!/usr/bin/python
在PC上调试时使用顶行,底部用于1and1等服务器。我留下如图所示的行,然后在服务器上删除第一行后再编辑它们。
在打印任何其他输出之前,打印指定HTML的内容类型: 这可以通过在脚本的早期在某处添加以下行来完成:
print "Content-Type: text/html\n\n"
请注意,需要2行结束。
设置Python脚本以提供调试信息: 导入以下内容以获取详细的调试信息。
import cgitb; cgitb.enable()
如果cgitb不可用,则可以执行以下操作:
import sys
sys.stderr = sys.stdout
在服务器上,必须将python脚本权限设置为执行。 上传文件后,请务必编辑第一行并设置要执行的文件的权限。
检查是否可以直接点击python脚本。如果不能,请按照上述步骤(2-6)进行修复。然后当Python脚本工作时,调试shtml。