我有一个从家用笔记本电脑设置的网络服务器,它作为游戏网络服务器我试图创建一个GUI,所以我们更容易维护服务器,我试图使用批处理文件在计算机上执行操作
<form method="post"> <input type="submit" name="startServer" value="Start Server"> </form> <? if(isset($_POST['startServer'])){ exec('batch/startServer.bat'); } ?>
我的startServer.bat将在运行服务器的笔记本电脑上运行,并将执行所有操作以启动我们的游戏服务器,因此有另一个目录“Instance”包含一个可删除的“Server.exe”批处理文件将运行
我有的问题是运行Web服务器并测试它,如果我直接打开批处理文件它不起作用但它似乎PHP代码不起作用
为了澄清我使用的是apache,我的浏览器是chrome
对于任何愿意回答这条路线的人来说,这只是一个简单的问题是正确的吗?使用PHP将允许所有内容在托管服务器的计算机上运行,因此最终用户只能看到GUI,服务器将运行批处理文件和Web服务器上的所有内容而不是本地计算机(如果有意义的话)?
编辑:要更清楚正在运行的函数exec运行,但它只是挂起像应用程序正在加载我需要一个实际打开应用程序的解决方案是我的主机,例如,如果我想打开记事本我按下按钮在Web服务器和记事本将在计算机上打开
编辑2:我想请注意,我不需要使用exec功能,我已经尝试了所有的答案日期2017年7月19日:下午3:45没有工作,如果我做的事情在排序回应exec(‘启动text.bat’);我将得到一个这是一个测试,以显示您的批处理正在工作,只是有回声…..在批处理文件中我遇到的主要问题是服务器没有物理显示打开的文件,如显示GUI让我们只是以记事本为例
我可以打开记事本并获得一些返回值,只要我的批处理文件在完成运行后关闭记事本,但记事本的GUI从未显示,这非常重要
我在一些关于使用apache作为服务的文章中读到了我很确定我的但是我知道xaammp有足够的priveleges并且我已经选中了“允许apache与桌面交互”的框,但是没有GUI弹出那些我想我试图通过的主要观点是我需要显示GUI而不仅仅是打开文件作为后台服务.
如果它使回答变得更容易,那么我愿意切换编程语言,如果能够做到我想要的更容易的话
Note: If a program is started with this function,in order for it to
continue running in the background,the output of the program must be
redirected to a file or another output stream. Failing to do so will
cause PHP to hang until the execution of the program ends.
我认为“挂起就像应用程序正在加载”是你的应用程序等待bat文件终止/关闭以获得输出结果
让我们尝试另一种方法,我发现它是here,其概念是创建一个执行所需程序的调度程序,并使用命令调用它.
希望这个帮助:
shell_exec('SCHTASKS /F /Create /TN _notepad /TR "notepad.exe" /SC DAILY /RU INTERACTIVE'); shell_exec('SCHTASKS /RUN /TN "_notepad"'); shell_exec('SCHTASKS /DELETE /TN "_notepad" /F');