使用php的shell_exec使用“wine”

时间:2016-11-01 00:31:32

标签: php debian exec shell-exec wine

我目前正在尝试使用PHP脚本中的“wine”命令。

如果我执行此操作:

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

一切正常,WINE版本显示在$ shell中。

但是,如果我尝试这样做:

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

我得到以下输出:

  

wine:chdir to /.wine:没有这样的文件或目录

我做错了什么?如果我直接向shell输入上面的命令,一切正常。如果我在葡萄酒面前没有/ usr / bin /,那么输出是相同的。

Br,Chris

1 个答案:

答案 0 :(得分:1)

我自己没有尝试过,但我认为这是因为葡萄酒是以不同的用户身份运行的,具有不同的环境设置。尝试在.wine内创建/var/www目录,并使www-data用户成为此目录的所有者,并创建/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");