1

所以基本上,我对 Python 有点陌生。我创建了一个服务器,让它运行良好,文件和所有内容都显示出来。

但问题是,每次我尝试在 Python 中打开文件进行读/写时,我的终端都会抛出“拒绝访问”错误。

你知道,这是一个基本的服务器:

#!/usr/bin/env python
import BaseHTTPServer
import CGIHTTPServer
import cgitb

cgitb.enable();
server = BaseHTTPServer.HTTPServer;
handler = CGIHTTPServer.CGIHTTPRequestHandler;
address = ("",80);
handler.cgi_directories = ["/home"];

httpd = server(address,handler);
print("Working . . . ");
httpd.serve_forever();

没什么太花哨的。所以我启动服务器,然后当用户导航到页面时,“/home/file.py”包含以下代码:

#!/usr/bin/env python
f = open("asdf.txt","w");

什么都没有发生,当我检查运行服务器的终端时,它说,

 localhost - - [27/Aug/2012 17:58:18] "GET /home/file.py HTTP/1.1" 200 -
 Traceback (most recent call last):
   File "/home/SERVER/home/file.py", line 4, in <module>
     f = open("asdf.txt","w");
 IOError: [Errno 13] Permission denied: 'asdf.txt'

我已经查找了一段时间,但我还没有找到解决方案。这可能是一个非常简单的解决方案,可以让专业的 Python 用户大开眼界,但要考虑到所有自学成才的程序员都必须从某个地方开始。对我来说,我现在有点落后,至少在 Python 方面。

我尝试了一些我从互联网上找到的解决方案(以及“可能已经有你答案的问题”),比如导入“os”并使用它来指定创建文件的确切位置。我尝试在 SERVER 文件夹和包含 Python 脚本的文件夹上使用“sudo chmod g+w”。但是这些互联网解决方案都没有帮助我。

我也会记得接受答案。

我试图使问题尽可能准确。所以如果你还有什么需要知道的,我可以更新一下。

由于这是一个“权限被拒绝”错误,我怀疑这是 Python 的错,并且可能是我没有在某处设置的一些权限。但我不知道他们会在哪里或在哪里。

4

1 回答 1

2

如果您阅读CGIHTTPServer上的 python 文档:

请注意,出于安全原因,CGI 脚本将使用用户nobody 的UID 运行。CGI 脚本的问题将转换为错误 403

所以这似乎有点棘手,除非您愿意放弃所有最佳实践并让任何人在您的文件夹中执行操作。

于 2012-08-27T22:47:04.283 回答