2011-08-15 7 views
0

問題が発生しているようです。スタッフのユーザーにそのプログラム用のMySQLデータベースをダウンロードさせることができるようにするためのビューが必要です。残念ながら、それは動作していません。私は問題を見つけ出すのが難しいようです。views.pyファイルを使用してmysqlデータベースをダンプできない

Views.py

@login_required 
def dbbackup(request): 
    if not (request.user.is_authenticated() and request.user.is_staff): 
     raise http.Http404 
    os.popen3("mysqldump -u *username* -p*password* *database* > /usr/local/src/djcode/c2duo_mms/backup.sql") 
    os.popen3("gzip -c /usr/local/src/djcode/c2duo_mms/backup.sql > /usr/local/src/djcode/c2duo_mms/backup.gz" 
    return HttpResponseRedirect("/mmc") 

私は問題を解決しようとしてきました。 がデータをダンプする部分では失敗しています - 表示されるc2duo_mmsにはSQLファイルが存在しないためです。

ここで、別のPythonスクリプトを作成すると、python test.pyを使用して実行すると動作します。では、なぜ私のviews.pyファイル(またはDjango)ではうまく動かないのですか?

#!/usr/bin/env python

from django.conf import settings 
import os 

os.popen3("mysqldump -u *username* -p*password* *database* > /usr/local/src/djcode/c2duo_mms/backup.sql") 
os.popen3("gzip -c /usr/local/src/djcode/c2duo_mms/backup.sql > /usr/local/src/djcode/c2duo_mms/backup.gz") 

test.pyはまた、ここに私のc2duo_mmsフォルダのパーミッションです。すべてのファイルにも同じ権限があります。私は許可とは関係ないと思う。また、私は完全なディレクトリパスを使用していることを確認しています。

drwxr-xr-x 5 root root 4096 Aug 15 12:40 c2duo_mms

答えて

2

ウェブサーバは、おそらく、ルート以外のユーザーとして実行されているので、ファイルを作成する権限がありません。

+0

現在、リンクをクリックすると、ホームページにリダイレクトされますが、ダラベースはダンプされません。認証エラーの報告はありません。しかし、この場合、Webサーバーを実行しているユーザーをどのように見つけることができますか? – Shehzad009

+1

@ Shehzad009エラーを表示するには、 'os.popen3'によって返された' stderr'を読み込む必要があります。また、[documentation says](http://docs.python.org/library/os.html#os.popen3) 'os.popen3'は廃止されているので、' subprocess'モジュールも考慮してください。そして、もしあなたがLinuxであれば、 'ps u'を実行してあなたのウェブサーバーがどんなユーザーであるかを知ることができます。 – Kirill

関連する問題