我正在使用hostgator,他们发誓支持python,但我还没有看到一个正在运行的python脚本。我已经尝试了几个脚本,我最新的脚本就是他们在网站上提供的脚本:
#!/usr/bin/python
print "Content-type: text/html\n\n";
print "<html><head>";
print "<title>CGI Test</title>";
print "</head><body>";
print "<p>Test page using Python</p>";
print "</body></html>";
我收到内部服务器错误: http://elkuzu.com/cgi-bin/test.py
该文件具有755个权限,文件夹cgi-bin也是如此。他们拒绝帮助我解决他们所谓的“编码”问题...但是除了内部服务器错误之外,我已经尝试过并且只收到内部服务器错误,我认为问题在于他们。谁知道什么可能是错的?
错误日志:
[Sat May 19 09:11:38 2012] [error] [client 74.129.48.242] File does not exist: /home/elkuzu/public_html/404.shtml
[Sat May 19 09:11:38 2012] [error] [client 74.129.48.242] File does not exist: /home/elkuzu/public_html/favicon.ico
[Sat May 19 09:11:37 2012] [error] [client 74.129.48.242] File does not exist: /home/elkuzu/public_html/500.shtml
我和我的主持人(hostgator)谈过,他们把它变成了一张票,这让我觉得有些事情已经结束了。
答案 0 :(得分:7)
关于如何使用Python作为CGI,有documentation。
在您的情况下,问题是行结尾。它们是每行末尾隐藏的角色。
在类Unix系统上,程序文件中的行结尾必须是 Unix风格的行结尾。这很重要,因为Web服务器 检查脚本的第一行(称为shebang)并尝试运行 那里指定的程序。它很容易被Windows系列混淆 结尾(回车和换行,也称为CRLF),所以你有 将文件转换为Unix行结尾(仅限换行,LF)。这个 可以通过FTP在文本模式下上传文件自动完成 而不是二进制模式,但首选方式只是告诉你的 编辑器用Unix行结尾保存文件。大多数编辑都支持 此
在Windows(即记事本)上,它们表示为(CR LF或\r\n
),而在unix上它们是(LF或\n
)。
在Notepad++中,您可以将行结尾视为符号,如下所示:查看 - &gt;显示符号 - &gt;显示行尾
要使用unix替换Windows换行符,您可以使用:搜索 - &gt;替换...
在替换对话框中,找到\r\n
,并将其替换为\n
。确保选择了扩展搜索模式。
或者,您可以使用编辑 - &gt; EOL转换 - &gt; UNIX格式
答案 1 :(得分:0)
我知道这是一个老问题,但我也遇到了与hostgator的500错误(指出我一年前放弃尝试)。几天前,他们决定再次尝试“tutorial”并再次尝试它。
我尝试更简单的方法:
#!/usr/bin/python
import sys
print sys.version_info
我再次遇到500错误,但是在与支持人员聊天后,他们给出了一条日志消息 话说:
[error] [client 192.x.x.x]来自脚本的格式错误的标头。错误的标题=(2,6,6,'最终',0):test1.py
使用该信息(日志消息包含python所以它在某种程度上正在执行)我在Unix site找到了这篇文章,我得到了这个:
当HTTP规范(以及来自HTTP服务器的错误消息)指定时,HTTP标头和正文之间需要一个空行,否则服务器不知道标题的结束位置和正文开始。
我将脚本更改为:
#!/usr/bin/python
print ""
import sys
print sys.version_info
它有效!奇怪的是,在成功运行此脚本之后,教程中的示例(下面的代码)现在也适用于我
#!/usr/bin/python
print "Content-type: text/html\n\n";
print "<html><head>";
print "<title>CGI Test</title>";
print "</head><body>";
print "<p>Test page using Python</p>";
print "</body></html>";
为什么现在有效?我不知道,但至少我希望这个答案可以帮助有人处理hostgator [缺乏]支持。