중복 질문이지만 3 페이지의 "django subprocess"를 검색 한 후 미안하지만 문제가 해결되지 않았습니다.Django의 이상한 하위 프로세스 문제
pdflatex
파일에 tex
파일을 실행하려고하는데 어떤 이유로 장고에서 아무것도 생성하지 않습니다. 그것은 일반 파이썬 스크립트에서 잘 작동합니다. 여기서 대부분의 코드를 생략했지만, 이는 기본적으로 중요한 비트입니다. 나는 mod_wsgi와 함께 apache2에서 이것을 실행하고 있는데 아파치 사용 권한 관련 문제일지도 모른다고 생각합니다. 미리 감사드립니다.
import subprocess
test = subprocess.Popen(['pdflatex','/home/sheepz/test.tex'],shell=True, stdout=subprocess.PIPE)
log = open('/home/sheepz/log.log', 'w')
log.write(str(test.communicate()))
log.close()
the content of the file "log.log":
('This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian)\n restricted \\write18 enabled.\n**\n! End of file on the terminal... why?\n', None)
편집 : 이 문제에 대한 해결책은 아주 간단합니다. 여기에 추가하기 만하면 문제가있는 모든 사람이 찾을 수 있습니다. 기본적으로 설정 지시문 WSGIDaemonProcess을 사용하여 www- 데이터가 아닌 다른 사용자로 사이트를 실행해야합니다. 지금까지 내가 이해, mod_wsgi에이 표준 출력을 사용하려고 어떤 과정을 무시하기 때문에, 또한
ServerName www.mysite.com
ServerAlias *mysite.com
WSGIDaemonProcess www.mysite.com user=joe group=joe home=/home/joe/
WSGIProcessGroup www.mysite.com
, 당신을 httpd.conf에 WSGIRestrictStdout Off
를 추가하는 것이 좋습니다 것 : 여기에 최소한의 구성입니다. 고마워, 그레이엄.
어떤 OS를 사용합니까? SE Linux를 사용할 수 있습니까? –
Ubuntu 10.04 LTS이므로 SELinux는 기본적으로 설치되지 않습니다. –
WSGIRestrictStdout은 필요하지 않습니다. mod_wsgi 3.X를 기본값으로 사용하므로 사용자가 이식성이없는 WSGI 응용 프로그램을 선호하기 때문에 stdout 액세스를 허용합니다. –