2016-11-01 4 views
0

J'essaye actuellement d'utiliser une commande "wine" de mon PHP-Script.utilise "wine" avec shell_exec de php

Si j'exécute ceci:

$shell = shell_exec("/usr/bin/wine --version"); 

Tout fonctionne très bien et la version du vin est affiché dans la coquille de $.

Mais, si je tente de le faire comme ceci:

$run = shell_exec("/usr/bin/wine ".$workdir."/bin/tool.exe -m ".$workdir."/bin/std.maps -a ".$workdir."/bin/alias.file -n ".$workdir."/files/".$project_name."/upload/dump.bin -o ".$workdir."/files/".$project_name."/maps/definitions.list"); 

qui se traduit par:

$run = shell_exec("/usr/bin/wine /var/www/html/bin/tool.exe -m /var/www/html/bin/std.maps -a /var/www/html/bin/alias.file -n /var/www/html/files/1-59374-94700/upload/dump.bin -o /var/www/html/files/1-59374-94700/maps/definitions.list 2>&1"); 

Je reçois la sortie suivante:

vin: chdir vers /.wine: Aucun fichier ou répertoire de ce type

Qu'est-ce que je fais mal? Si j'entre la commande ci-dessus directement au shell, tout fonctionne correctement. Si je le fais sans/usr/bin/devant le vin, les résultats sont les mêmes.

Br, Chris

Répondre

1

J'ai pas essayer moi-même, mais je pense qu'il est parce que le vin est exécuté en tant qu'utilisateur différent avec différents paramètres d'environnement. Essayez de créer le répertoire .wine à l'intérieur de /var/www et de rendre l'utilisateur www-data utilisateur en tant que propriétaire de ce répertoire et créer le répertoire /var/www/.wine HOME.

$run = shell_exec("HOME=/var/www/.wine /usr/bin/wine ".$workdir."/bin/tool.exe -m ".$workdir."/bin/std.maps -a ".$workdir."/bin/alias.file -n ".$workdir."/files/".$project_name."/upload/dump.bin -o ".$workdir."/files/".$project_name."/maps/definitions.list"); 
+0

Nous vous remercions de votre réponse. Cela semble fonctionner maintenant. Mais, le script-runtime est très long. J'ai essayé avec sudo, et là le temps d'exécution était d'environ ~ 0.5 sek, maintenant avec votre solution il tourne environ 4 secondes, et je reçois l'avertissement de X-Server. (C'est un outil de ligne cmd donc je n'ai pas besoin de sortie graphique.) Savez-vous, comment faire fonctionner cela? Je ne veux pas utiliser sudo. –