【发布时间】:2017-12-10 01:29:33
【问题描述】:
在每个人都开始讨论“安全风险”“无法完成”之前,请停下来阅读整个帖子
我有一个从家用笔记本电脑设置的网络服务器,它用作游戏网络服务器,我试图创建一个 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 将在运行服务器的笔记本电脑上运行,并将执行所有必要的操作来启动我们的游戏服务器,因此存在另一个目录“Instance”,其中包含一个可执行的“Server.exe”,批处理文件将运行该目录
我遇到的问题是运行网络服务器并测试它如果我直接打开批处理文件它不起作用但似乎 php 代码不起作用
为了澄清,我使用的是 apache,我的浏览器是 chrome
对于任何愿意回答我正在走的路线的人来说,只是一个简单的问题是正确的,对吗?使用 php 将允许所有内容在托管服务器的机器上运行,因此最终用户将只能看到 GUI,而服务器将在 Web 服务器上运行批处理文件和所有内容,而不是在本地机器上运行(如果有意义的话)?
编辑:为了更清楚地了解函数 exec 运行的情况,但它就像应用程序正在加载一样挂起我需要一个实际打开应用程序的解决方案是我的主机,例如,如果我想打开记事本我按下 Web 服务器上的按钮,记事本将在计算机上打开
编辑 2:我想指出,我并不完全 需要 使用 exec 函数,我已经尝试了截至 7 月 19 日的所有答案/ 2017:3:45 pm 如果我在echo exec('start text.bat'); 上做某事,我将得到一个This is a test to show your batch is working 并且只是在批处理文件中有echo ..... 我遇到的主要问题是服务器没有实际显示像显示 GUI 这样打开的文件让我们以记事本为例
只要我的批处理文件在完成运行后关闭记事本,我就可以打开记事本并获得一些返回值,但是永远不会显示记事本的 GUI,这非常重要
我读过一些关于使用 apache 作为服务的文章,我很确定我是,但我知道 xaammp 有足够的权限,我已经选中了“允许 apache 与桌面交互”的框,但是没有 GUI弹出这就是我想我试图理解的要点是我需要显示 GUI 而不仅仅是将文件作为后台服务打开。
如果它使回答更容易,我愿意切换编程语言,如果有一种可以更轻松地做我想做的事情
【问题讨论】:
-
是的,我什至尝试将批处理文件放在同一个文件夹中
-
@AlivetoDie 你不正确。 PHP 有一个短标签功能。只要在
php.ini文件中启用短标签,它就可以只写<?并且它工作得很好。在 php.ini 中设置:short_open_tag=On -
它的 php 7 你不必指定它
-
PHP 不需要任何特殊权限来运行 .bat 文件。关键是:.bat 包含的任何其他命令都需要哪些权限?
-
一些事情...你说你希望它在服务器上运行,但你希望在你的客户端上打开一个编辑器(打开记事本是客户端的事情,而不是服务器端的事情)。此外,如果您的“startServer”需要任何类型的交互,那么这将不起作用,因为您无法与批处理文件交互(无论如何运行它的方式)。
标签: php windows batch-file