私は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
はしかし、私はエラーを取得しています)、と言ってファイルは存在しません(たとえ私が数十回チェックしたとしても)。これは、相対ファイルパスと絶対パスを使用する場合に発生します。
- なぜオープンされていない() ファイルを右を見つける:
私は2つの質問を持っていますか?
- ファイルシステムからファイル を返す最良の方法は何ですか? (私は、ファイルを返すようにmod_pythonのを使用するためにいくつかのより良い方法 が欠落していないよ を確認するために頼む。)
おかげ
編集を:私は開いていることを発見しhttp://www.programmingforums.org/thread12384.html():このスレッドを見つけた後、 (私は/ 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-データ"として実行され、 "/"が不足しています。 –