基本上,我对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的错,并且可能是某些权限我没有在某处设置。但我不知道他们会在哪个或哪里。
答案 0 :(得分:2)
如果您阅读CGIHTTPServer上的python文档:
请注意,出于安全原因,CGI脚本将使用用户nobody的UID运行。 CGI脚本的问题将转换为错误403
所以这看起来有点棘手,除非你愿意抛弃所有最佳实践并让它们离开 任何人都在你的文件夹里做东西。