我试图通过python&amp; amp; <div>
显示/etc/postfix/transport.in的内容。 CGI。当我从命令行运行脚本时,它可以正常工作,但是,当从网页调用它时,它不会显示文件内容。这就是我在CGI中所拥有的:
#!/usr/bin/env python
import cgi, os.path
# fileName = "/etc/postfix/transport.in"
form = cgi.FieldStorage()
fileName = form['file'].value
def safePlainText(s):
newString = s.replace('&', '&').replace('<', '<')
return newString
def fileLinesToHTMLLines(fileName):
safeLines = list()
if os.path.exists(fileName): # test if the file exists yet
lines = fileToStr(fileName).splitlines()
for line in lines:
safeLines.append(safePlainText(line))
return safeLines
def fileToStr(fileName):
fin = open(fileName);
contents = fin.read();
fin.close()
return contents
lines = fileLinesToHTMLLines(fileName)
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Data File %s</title>" % fileName
print "</head>"
print "<body>"
print "<ul>"
for line in lines:
print "<li> %s </li>" % str(cgi.escape(line))
print "</ul>"
print "</body>"
print "</html>"
除了我试图显示的文件行之外,所有内容(HTML标签,包括标题)都按预期进行。 Firebug将服务器的响应显示为:
<html>
<head>
<title>Data File transport.in</title>
</head>
<body>
<ul>
</ul>
</body>
</html>
但是,如果我从命令行运行脚本,我会得到:
# sudo -u apache ./test3.py
Content-type:text/html
<html>
<head>
<title>Data File /etc/postfix/transport.in</title>
</head>
<body>
<ul>
<li> host.domain.com relay:[mailhub.domain.corpnet1] </li>
<li> * relay:[host.mailrelay.com] </li>
</ul>
</body>
</html>
我确信这很简单,但对于我的生活,我无法弄明白...... 我在RHEL7上运行Python 2.7.5 / Apache 2.4.6。
答案 0 :(得分:1)
“数据文件”不同。
数据文件transport.in
数据文件/etc/postfix/transport.in
请从网页调用时粘贴网址。