2016-11-01 83 views
0

我目前正在尝试从我的PHP脚本中使用“wine”命令。使用“wine”和php的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到/.wine:没有这样的文件或目录

我做错了什么?如果我直接将上面的命令输入到shell,所有工作都正常。如果我在wine前面没有/ usr/bin /,那么输出结果是一样的。

溴,克里斯

回答

1

我还没有尝试它自己,但我想这是因为葡萄酒是运行与不同环境设置不同的用户。尝试在/var/www内部创建.wine目录,并使www-data用户成为此目录的所有者,并创建/var/www/.wine主目录。

$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 sek,现在你的解决方案运行了大约4秒,并且我得到了X-Server警告。 (这是一个CMD线工具,所以我不需要图形输出。 你知道吗,如何让这个工作?我不想使用sudo。Br –