打开批处理文件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]");

链接地址: http://www.djcxy.com/p/96643.html

上一篇: Open batch file php

下一篇: How to add heatmap to quantmod::chart