2016-11-01 84 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 –