2013-10-17 2 views
0

django 응용 프로그램에서 파일 크기를 가져 오는 함수를 작성하고 있습니다.django apache의 마운트 드라이브에서 파일을 읽을 수 있습니까?

장고 응용 프로그램은 Apache 서버를 통해 실행됩니다.

파일은 다른 위치에 있습니다. 우리는 마운트 된 경로를 통해 파일을 가져 왔습니다. 다음과 같이 그때는 잘 작동의 runserver 명령을 통해 장고 서버를 실행하는 경우

코드

import os 
filePath = '/mnt/file.html' 
size = flaot(os.stat(filePath)) 

이다.

djnago 서버를 통해 아파치를 실행하면 작동하지 않습니다.

파일이 동일한 위치에 있으면 두 가지 방법 (아파치와 아파치 제외)을 통해 작동합니다. 예. 적인 filePath = '/ 집'또는 '/ 루트'또는 장고 - 아파치를 통해 마운트 경로에서 파일 크기를 얻을 수있는 또 다른 방법은

제발 도와주세요됩니다 어떤 동일한 시스템

에서 어떤 위치. 미리 감사드립니다.

답변

0

/mnt에 액세스 할 권한이없는 사용자가 아파치를 실행하고있을 가능성이 큽니다.

예를 들어, 우분투의 apache는 www-data입니다. 이것을 확인하려면 /mnt 폴더에 대한 읽기/실행 권한을 apache를 실행하는 사용자에게 제공하거나 apache를 실행하는 동일한 사용자 아래에서 runserver를 실행하고 동일한 오류가 발생하는지 확인하십시오. 당신이 아파치를 실행하는 사용자가 알 수없는 경우

, 시도 :

다음
ps aux | grep apache 

아파치 서버 실행 파일이 아파치이나 아파치라는 이름되지 않는 경우 (예를 들어, 일부 리눅스 배포판에서이 아파치 이름을) 위 명령에서 apache를 실행 파일 이름으로 바꿉니다. 문제가 권한과 관련되어있는 경우

su - www-data -c "cat /mnt/file.html" 

, 오류 메시지가 문제가 무엇인지를 말해 볼 수 :

는 사용자 아파치입니다 실행 www가 데이터라고 할 수 있습니다.

+0

도움 주셔서 감사합니다. – Mugdha

0

이것은 디렉토리/파일 권한 및/또는 프로세스에서 사용하는 사용자의 권한과 관련이 있습니다.

장고 서버를 실행하면 사용자 이름으로 실행되며 대부분 사용자가 파일을 저장하는 장소에 액세스 할 수 있습니다. 하지만 아파치 뒤에서 실행되면, 아파치 또는 www 데이터 사용자로 실행되며, 이들 사용자는 해당 장소에 액세스 할 수 없습니다.

해결책 : 디렉터리 사용 권한을 변경하거나이 사용자가이 디렉터리에 액세스하도록 허용 한 사용자 그룹에 Apache 사용자를 추가하거나 Apache 사용자를이 디렉터리의 소유자로 지정하거나 !

+0

도움 주셔서 감사합니다. apache 사용자에 대한 권한/소유권이 없으므로 테스트하지 않았습니다. – Mugdha

+0

나는 당신이 무슨 뜻인지 잘 모르겠다. 권한을 설정할 권한이 없다고 말씀하셨습니까? – securecurve

관련 문제