我目前正在尝试使用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
答案 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");