打开批处理文件php
在所有人开始接触“安全隐患”之前,“不能做”停在那里并阅读整篇文章
我有一个从家用笔记本电脑设置的网络服务器,它充当游戏网络服务器,我尝试创建一个GUI,以便我们更容易维护服务器,并尝试使用批处理文件在计算机上执行操作
因此,为了使这个透视我有我的索引文件index.php
<form method="post">
<input type="submit" name="startServer" value="Start Server">
</form>
<?
if(isset($_POST['startServer'])){
exec('batch/startServer.bat');
}
?>
我的startServer.bat将在运行服务器的笔记本电脑上运行,并将执行所有动作以启动我们的游戏服务器,以便有另一个包含批处理文件将运行的可变“Server.exe”的目录“Instance”
该问题即时运行的Web服务器和测试这不工作,如果我直接打开批处理文件,它的工作原理,但它似乎PHP代码不起作用
澄清我使用Apache和我的浏览器是铬
对于任何愿意回答即将到来的路线的人来说,一个简单的问题是正确的? 使用PHP将允许一切运行在托管服务器的计算机上,因此最终用户只能看到GUI,服务器将运行批处理文件以及Web服务器上的所有内容,而不是本地计算机(如果有意义的话)。
编辑:要更清楚发生什么事exec函数运行,但它只是像应用程序正在加载挂起我需要一个解决方案,将实际上打开应用程序是我的主机,例如,如果我想打开记事本我按下按钮在Web服务器上,记事本将在计算机上打开
编辑2:我想说明的是,我不完全需要使用exec
函数,并且我已经尝试了所有日期为7/19/2017的答案:3:45pm没有任何工作,如果我在排序上做了什么echo exec('start text.bat');
我会得到一个This is a test to show your batch is working
,只是有echo .....
在批处理文件中,我遇到的主要问题是服务器没有物理显示打开的文件,如显示GUI让以记事本为例
只要我的批处理文件在完成运行后关闭记事本,我就可以打开记事本并获得一些返回值,但记事本的GUI从不显示,这非常重要
我读了一些关于使用Apache作为服务的文章,但我确实知道xaammp具有足够的优势,并且我选中了“允许apache与桌面交互”的框,但是没有GUI弹出我想我试图解决的主要观点是我需要显示GUI而不仅仅是打开文件作为后台服务。
如果它使答案更容易,我愿意转换编程语言,如果那些可以做我想要的东西更容易
在关于exec函数的php手册中,有一个注释:
注意:如果一个程序以这个函数启动,为了继续在后台运行,程序的输出必须被重定向到一个文件或另一个输出流。 否则会导致PHP挂起,直到程序执行结束。
我认为“像应用程序正在加载一样挂起”是您的应用程序正在等待bat文件终止/关闭以获取输出结果
让我们尝试另一种方法,我在这里找到了它,其概念是创建一个调度程序来执行您想要的程序并使用命令调用它。
希望这个帮助:
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');
你的理论是正确的,它会在服务器上运行,但是你可能会遇到直接从php运行应用程序的问题(使用这种方法afaik它不会从PHP分离,并且web应用程序在应用程序运行时“挂起”)。
确保:返回值被打印/记录。 只是一个
<?php
if(isset($_POST['startServer'])){
echo exec('batch/startServer.bat');
}
?>
可以指出你正确的方向。 执行功能可能已在您的发行版中禁用。
运用
<?php
代替
<?
强烈建议,默认情况下,short_tags在大多数发行版(wamp,xamp等)中都未启用。
设置调试模式并打印所有内容以获取有关该问题的信息:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
if(isset($_POST['startServer'])){
echo exec('batch/startServer.bat');
}
?>
如果您没有任何回应,请尝试使用“hello world”的简单批处理文件来测试它是否正常工作。
请注意,权利和限制来自php环境,批处理文件继承了运行PHP代码/ Apache的相同权限(在mod_php的情况下)
从这里:
你如何从PHP运行.bat文件?
你有没有尝试过: system("cmd /c C:[path to file]");
?
上一篇: Open batch file php