Je suis désolé si c'est une question en double, mais après avoir recherché 3 sous-rubriques pour "sous-processus django", je n'ai pas trouvé la réponse à mon problème particulier.Problème de sous-processus étrange avec Django
J'essaye d'exécuter pdflatex
sur le fichier tex
, mais pour une raison quelconque dans Django cela ne produit rien. Cela fonctionne très bien dans un script python régulier, cependant. J'ai omis la plupart du code ici, mais c'est fondamentalement le bit important. Je cours ceci sur apache2 avec mod_wsgi, et je suspecte que ce pourrait être un problème lié aux permissions d'apache, pas du tout. Merci d'avance.
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)
EDIT: La solution de ce problème est assez facile. Je veux juste l'ajouter ici, donc tout le monde qui a des problèmes avec ça, peut le trouver. Fondamentalement, cela implique d'exécuter le site en tant qu'utilisateur différent plutôt que www-data en utilisant la directive de configuration WSGIDaemonProcess. Voici une configuration minimale:
ServerName www.mysite.com
ServerAlias *mysite.com
WSGIDaemonProcess www.mysite.com user=joe group=joe home=/home/joe/
WSGIProcessGroup www.mysite.com
En outre, il serait souhaitable d'ajouter WSGIRestrictStdout Off
à votre httpd.conf, parce que, pour autant que je comprends, mod_wsgi ignore tout processus qui tente d'utiliser stdout. Merci, Graham.
Quel système d'exploitation utilisez-vous? SE Linux activé? –
Ubuntu 10.04 LTS, donc SELinux n'est pas installé par défaut. –
WSGIRestrictStdout n'est pas nécessaire si vous utilisez mod_wsgi 3.X par défaut pour autoriser l'accès stdout car les utilisateurs préfèrent écrire des applications WSGI non portables. –