mod_python과 Apache를 처음 사용하고 GET 요청 후 파일을 사용자에게 반환하는 데 문제가 있습니다. 지금은 아주 간단한 설정을 가지고, 단순히 파일을 열고 응답에 기록하는 기대했다 : 말,mod_python에서 어떻게 파일 시스템을 열고 전송합니까?
from mod_python import apache
def handler(req):
req.content_type = 'application/octet-stream'
fIn = open('response.bin', 'rb')
req.write(fIn.read())
fIn.close()
return apache.OK
는 그러나, 나는 오류를 받고 있어요 나는 (오픈 사용) 그 파일은 존재하지 않습니다 (비록 내가 12 번 체크 했더라도). 이것은 상대적 및 절대 파일 경로를 사용할 때 발생합니다.
- 왜 열려 있지 않은() 파일을 권리를 찾는 :
나는 두 가지 질문이 있어요?
- 파일 시스템에서 파일을 반환하는 가장 좋은 방법은 무엇입니까? (내가 파일을 반환하여 mod_python을 사용하는 몇 가지 좋은 방법 누락 아니에요 이 있는지 확인 부탁드립니다.)
감사
편집 : 나는 열려있는 것을 발견 http://www.programmingforums.org/thread12384.html() :이 스레드를 찾은 후 내가 home/home/myname/httpdocs에서 별명을 지정하지 않고 다른 디렉토리로 파일을 이동하면 나를 위해 작동하지만/data를 사용하면 작동합니다. 왜 그런 아이디어가 있니?
편집 2 : 내 디버그 오류의 일부의 요청에 따라 :
MOD_PYTHON ERROR
ProcessId: 13642
Interpreter: '127.0.1.1'
ServerName: '127.0.1.1'
DocumentRoot: '/var/www'
URI: '/test/mptest.py'
Location: None
Directory: '/home/myname/httpdocs/'
Filename: '/home/myname/httpdocs/mptest.py'
PathInfo: ''
Phase: 'PythonHandler'
Handler: 'mptest'
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1537, in HandlerDispatch
default=default_handler, arg=req, silent=hlist.silent)
File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1229, in _process_target
result = _execute_target(config, req, object, arg)
File "/usr/lib/python2.5/site-packages/mod_python/importer.py", line 1128, in _execute_target
result = object(arg)
File "/home/myname/httpdocs/mptest.py", line 13, in handler
fIn = open('/home/myname/httpdocs/files/response.bin', 'rb')
IOError: [Errno 2] No such file or directory: '/home/myname/httpdocs/files/response.bin'
무슨 일이 일어나는지에 대한 단서를 찾은 후에 제 질문을 업데이트했습니다. 또한 귀하의 조언을 시도하고 몇 가지 흥미로운 사실을 발견 : mod_python은 "www- 데이터"로 실행하고 "/"밖으로 실행됩니다. –