我正在尝试创建一种面板,我想要“启动/停止”应用程序(游戏服务器)的操作。
HTTP服务器正在Windows Server 2008 R2上运行(WAMP SERVER 64位)
我发现我可以使用:psExec,它不是在等待完成应用程序,至少为我提供PID。
有一个代码为.bat:
cd "C:\Program Files (x86)\LucasArts\Star Wars Jedi Knight Jedi Academy\GameData\"
.\jampded +set dedicated 2 +set net_port 29075 +set fs_game lugormod +exec server.cfg
和PHP代码:
<?php
$command = "\"C:\\Program Files (x86)\\LucasArts\\Star Wars Jedi Knight Jedi Academy\\GameData\\PsExec.exe\" -d \"C:\\Program Files (x86)\\LucasArts\\Star Wars Jedi Knight Jedi Academy\\GameData\\serverstart.bat\"";
//echo ($command);
exec("$command");
?>
显示:执行test.php时出错,执行时间超过30秒
但是当我在控制台中编写该命令时,它会显示PID并自动退出,即使在启动时仍在运行。
(抱歉我的英文;))
答案 0 :(得分:2)
PsExec应足以在后台运行进程,但它需要用户首先接受EULA(交互式窗口)。如果您是从命令行运行它,那么您已经接受了这些条款,但是apache(以及apache下的php)作为系统用户运行但尚未接受这些条款。
您可以尝试使用/accepteula
选项运行psexec,看看它是否有帮助。
[+] 要获得输出PID:
echo exec('psexec.exe -accepteula -i -d "c:/file.bat" 2>&1')
答案 1 :(得分:0)
试试这个:
$command = "Path_to_your_bat_file";
pclose(popen("start /B ". $command, "r"));
这对我有用..