2016-11-01 12 views
0

В настоящее время я пытаюсь использовать команду «wine» из моего PHP-скрипта.использовать «wine» с php's shell_exec

Если я выполнить это:

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

Все работает отлично и ВИН версия отображается в $ оболочке.

Но, если я пытаюсь сделать это следующим образом:

$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"); 

Какие результаты в:

$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"); 

я получаю следующий результат:

вина: Chdir to /.wine: Нет такого файла или каталога

Что я делаю неправильно? Если я вхожу в команду выше непосредственно в оболочку, все работает нормально. Если я делаю это без/usr/bin/перед вином, то вывод будет таким же.

Br, Крис

ответ

1

Я не пробовал это сам, но я думаю, что это потому, что вино работает как другой пользователь с различными параметрами окружающей среды. Попробуйте создать каталог .wine внутри /var/www и сделать www-data пользователем как владельца этого каталога и сделать /var/www/.wine HOME directory.

$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

Благодарим вас за ответ. Кажется, сейчас он работает. Но время выполнения скрипта очень велико. Я пробовал с sudo, и там время выполнения составляло около 0,5 сек, теперь с вашим решением он работает около 4 секунд, и я получаю предупреждение X-Server. (Это инструмент командной строки cmd, поэтому мне не нужен графический вывод. Знаете ли вы, как заставить это работать? Я не хочу использовать sudo. –