1

これが重複した質問である場合は申し訳ありませんが、「django サブプロセス」を 3 ページ検索した後、特定の問題に対する答えが見つかりませんでした。

ファイルで実行しようとしてpdflatextexますが、何らかの理由で Django では何も生成されません。ただし、通常の python スクリプトでは問題なく動作します。ここではほとんどのコードを省略しましたが、これは基本的に重要な部分です。mod_wsgi を使用して apache2 でこれを実行していますが、apache のアクセス許可に関連する問題であると思われますが、わかりません。前もって感謝します。

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-data ではなく別のユーザーとしてサイトを実行する必要があります。最小構成は次のとおりです。

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ます。なぜなら、私の知る限り、mod_wsgi は stdout を使用しようとするプロセスを無視するからです。ありがとう、グラハム。

4

1 に答える 1

1

コマンドで「pdflatex」への絶対パスを指定します。ApacheユーザーPATHは、個人アカウントと同じディレクトリを検索しない場合があります。また、Apacheは、可能な場所への書き込みアクセス権を持たない特別なユーザーとして実行されます。mod_wsgiデーモンモードを使用し、そのデーモンプロセスがApacheユーザーではなくユーザーとして実行されるように指定することをお勧めします。その方法については、mod_wsgiサイトのドキュメントを参照してください。

于 2010-07-20T23:29:57.303 に答える