2009-02-04 13 views
0

J'ai Apache/2.2.11 en utilisant mod_python 3.3.1/Python 2.5 fonctionnant sous Linux Gentoo. Dans mon script python, j'appelle un win32 exe utilisant wine (appel os.popen2). Cela fonctionne très bien en dehors d'Apache mais sous mod_python je reçois:Appel de Wine depuis Apache

vin: ne peut pas ouvrir /root/.wine: Autorisation refusée

dans/var/log/apache/error_log. Mon installation Apache n'est pas en cours d'exécution en tant qu'utilisateur/groupe racine. Des idées pour lesquelles il cherche dans /root/.wine?

Merci,

LarsenMTL

Répondre

3

Il est probablement parce que $HOME est pas correctement réglé ...

btw. Êtes-vous vraiment sûr d'invoquer le vin de mod_python est une bonne idée?

Si vous êtes sûr, quelque chose comme ça pourrait fonctionner ...

from subprocess import Popen   

HOME = '/the/home/of/www-data' #PLEASE edit 
proc = Popen(cmd, shell=False, stdin=PIPE, 
      stdout=PIPE, stderr=PIPE, close_fds=True, 
      cwd=HOME, env={"HOME":HOME) 
+0

Merci Johannes. Votre réponse m'amène à ceci: http://stackoverflow.com/questions/133860/running-subversion-under-apache-and-modpython. J'ai piraté le fichier /etc/init.d/apache pour configurer $ HOME correctement. – Mark

+0

Oh, et l'utilisation du vin de mod_python est une idée horrible et horrible. Trop de code hérité. C'est sur l'horaire à réécrire, mais je suis sûr de savoir comment les horaires glissent et glissent. – Mark

+0

:-) Je préfère ne pas pirater /etc/init.d/apache car après une mise à niveau de distribution, il pourrait être réinitialisé ... Je pense qu'il est préférable de le définir lors de l'utilisation de Popen. Un autre processus engendré ne peut donc pas l'ignorer ... –

1

J'ai aussi avoir le temps très dur et fait beaucoup de recherches, mais a échoué. Enfin trouvé la façon la plus simple en ajoutant 'WINEPREFIX="/srv/www/.wine"' dans /etc/init.d/httpd fichier comme:

case $ARGV in 
start|stop|restart|graceful|graceful-stop) 
    WINEPREFIX="/srv/www/.wine" $HTTPD -k $ARGV 
    ERROR=$? 
    ;; 

Copier /root/.wine to /srv/www/.wine et changer le propriétaire apache (de la racine). J'espère que cela va résoudre le problème.