2011-08-15 3 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 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

현재 링크를 클릭하면 홈페이지로 리디렉션되지만 데이터베이스를 덤프하지 않습니다. 인증 오류에 대한보고는 없습니다. 그러나이 경우 웹 서버를 실행하는 사용자를 어떻게 찾을 수 있습니까? – Shehzad009

+1

@ Shehzad009 오류를보고 싶다면'os.popen3'에 의해 반환 된'stderr'을 읽을 필요가 있습니다. 또한 [documentation says] (http://docs.python.org/library/os.html#os.popen3)'os.popen3'가 더 이상 사용되지 않기 때문에'subprocess' 모듈을 고려하십시오. 그리고 리눅스에 있다면'ps u'를 실행하여 웹 서버가 어떤 사용자인지를 볼 수 있습니다. – Kirill

관련 문제