0

我正在尝试在localhost. 作为第一步,我在 python 中创建了一个服务器脚本

#!/usr/bin/env python

import BaseHTTPServer
import CGIHTTPServer
import cgitb; cgitb.enable()  ## This line enables CGI error reporting

server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", 8000)
handler.cgi_directories = ["/"]

httpd = server(server_address, handler)
httpd.serve_forever()

图像放置在执行此脚本的同一目录中。随后http://localhost:8000/test.jpg在浏览器中键入。

浏览器无法渲染图像并出现错误: The image "http://localhost:8000/test.jpg" cannot be displayed because it contains errors.

服务器脚本抛出一个错误,如

  File "/usr/lib/python2.7/CGIHTTPServer.py", line 253, in run_cgi
    os.execve(scriptfile, args, env)
OSError: [Errno 8] Exec format error

我尝试过显示文本,并且服务器在很多示例中都可以正常工作。除了它无法加载图像。我哪里错了?


问题解决了。我将 test.jpg 移动到服务器目录中的子目录中。

4

3 回答 3

2

您的代码正在尝试将 test.jpg 作为 cgi 脚本执行。如果您删除 CGIHttpRequestHandler 并改用 SimpleHTTPServer.SimpleHTTPRequestHandler 您将恢复您的图像。如果两者都需要,则需要将图像放在其他位置。

于 2013-07-26T15:38:28.240 回答
0

CGI 用于执行服务器端脚本,而不是提供静态内容。因此,它将尝试执行正在服务的文件(在这种情况下,尝试执行图像)os.execve(scriptfile, args, env):.

执行相当于在你的 shell 中运行文件。

用于SimpleHTTPServer静态内容,例如图像。

于 2013-07-26T15:38:15.223 回答
0

我相信错误是因为您没有设置 html 页面。

您的 python 脚本虽然在您的本地主机上运行服务器,但您需要 html/css 页面来实际显示图片和文字。

于 2013-07-26T15:39:58.627 回答