0

我无法打开我的 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 y 上,确保通过运行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

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

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

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

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

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

毕竟,当我尝试在 Web 浏览器上打开 url 时,我仍然收到 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

感谢您对这个不起眼的 python 新手的帮助和指导。顺便说一句,我在专用服务器中使用 WHM 和 CPanel。

4

2 回答 2

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行结束了。

于 2012-06-10T05:26:17.953 回答
0

如果您使用的是 Apache,那么您应该使用mod_pythonand WSGI.

于 2012-06-10T05:27:31.587 回答