在浏览器上打开python文件时出现500内部服务器错误

时间:2012-06-10 05:17:34

标签: python apache server-configuration

我无法打开我的python文件。我是使用python的新手,我来自PHP背景,这对我来说完全不同。 我在服务器`public_html / python / index.py'上创建了一个测试文件,其中包含一个简单的hello world代码:

#!/usr/bin/python

print 'Content-type: text/html\r\n'
print '\r\n'
print 'Hello, World!'

我一直在环顾四周,我需要做一些配置步骤才能运行python文件。

在shell上确保通过运行python安装了python并运行:

Python 2.4.3 (#1, Feb 22 2012, 16:05:45) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

然后我找到了python被安装的正确路径type -p python并且它是正确的:

user@domain.com [~]# type -p python
/usr/bin/python

最后我在博客中读到,为了执行python文件oustide cgi-bin文件夹,我需要用以下行修改我的.htaccess文件:

Options +ExecCGI
AddHandler cgi-script .cgi .pl .py

这也不起作用,但即使我尝试在cgi-bin文件夹中运行它,我仍然会遇到同样的错误。

以防万一我也改变了文件的权限,什么都没有:

user@domain.com [~]# chmod a+x public_html/python/index.py

完成所有这些操作后,当我尝试在网络浏览器上打开网址时,仍然会收到500内部服务器错误。

当我执行od index.py -c时,我得到以下内容:

0000000   #   !   /   u   s   r   /   b   i   n   /   p   y   t   h   o
0000020   n  \r  \n  \r  \n   p   r   i   n   t       '   C   o   n   t
0000040   e   n   t   -   t   y   p   e   :       t   e   x   t   /   h
0000060   t   m   l   \   r   \   n   '  \r  \n   p   r   i   n   t    
0000100   '   \   r   \   n   '  \r  \n   p   r   i   n   t       '   H
0000120   e   l   l   o   ,       W   o   r   l   d   !   '
0000135

感谢这位不起眼的蟒蛇新手的帮助和指导。 顺便说一下,我在专用服务器中使用WHM和CPanel。

2 个答案:

答案 0 :(得分:1)

要将标题与正文分开,您需要添加\r\n 两次。此外,所有标题都需要用单个\r\n

分隔

来源应该如下所示,

import sys

sys.stdout.write('Content-type: text/html\r\n')
sys.stdout.write('\r\n')
sys.stdout.write('Hello, World!')

另一个问题可能是你的shebang线的终点线。它应该是unix之类的。这意味着#!/usr/bin/env python应以\n结尾。尝试使用一些显示行结尾的编辑器打开它。或者在命令提示符od -c index.py中。它将显示行结尾。如果是\r\n,则需要\n

更新

在偏移21处,您有\r。那就是问题所在。按照以下命令

删除\r
tr -d \r < index.py > new.index.py

现在new.index.py应该\n行结束。

答案 1 :(得分:0)

如果您使用的是Apache,则应使用mod_pythonWSGI