PHP open.exe服务器端

PHP open.exe服务器端,php,xampp,exec,unity3d,server-side,Php,Xampp,Exec,Unity3d,Server Side,我一直在尝试在服务器端执行.exe文件。 换句话说,我真正想要的是在用户将文件上传到服务器后,执行一个.exe文件(转换此文件)。 我试着打开记事本,看看问题是在我的可执行文件中还是在php代码中,但它都没有运行(尽管如果我检查任务管理器,我可以看到它有一个属于系统用户的notepad.exe进程)。我猜这违反了windows上的某些安全措施 我可能应该说我正在Windows7x64上运行XAMPP 这就是我正在做的: exec("cd ../../ConvertObj/ &&

我一直在尝试在服务器端执行.exe文件。
换句话说,我真正想要的是在用户将文件上传到服务器后,执行一个.exe文件(转换此文件)。
我试着打开记事本,看看问题是在我的可执行文件中还是在php代码中,但它都没有运行(尽管如果我检查任务管理器,我可以看到它有一个属于系统用户的notepad.exe进程)。我猜这违反了windows上的某些安全措施
我可能应该说我正在Windows7x64上运行XAMPP

这就是我正在做的:

exec("cd ../../ConvertObj/ && ConvertObj.exe", $data, $ret);
//for debuggging
var_dump($data);
var_dump($ret);
正如您所看到的,我还试图读取输出,试图找到问题所在。 现在,您可能想知道为什么我也将此标记为unity3d。此可执行文件是Unity3d standalone.exe。在我读到的内容中,有一个命令行参数,它允许Unity3d在没有GUI的情况下运行,但不幸的是,这是一个仅限PRO的参数。。。我真的不介意看到服务器xD上的GUI
因此,我得到的输出(使用unity3d.exe)是

我觉得有点奇怪。我猜windows正在阻止服务器上的所有GUI应用程序,因为dir命令可以完美地工作,我认为这两行代码是Unity3D在抱怨什么。。。
有什么想法吗?

我以前不得不这么做。 在一个封闭的(lan)环境中,用户受到限制,我将此黑客攻击在一起

(记录在案,这并不是我引以为豪的事情,但它一直有效并持续至今,如果这是供一般公众使用的话,我不建议这样做)

在XP中,您可以在apache服务上选中“允许此服务与桌面交互”。这在W7中不起作用,根据我的经验,正如上面的评论所建议的,将服务设置为使用apache用户。。。这也没用

在W7中,我知道使它工作的唯一方法是停止在服务菜单中运行apache作为服务(将启动设置为手动)。然后使用httpd.exe并在启动项目中创建快捷方式

此外,由于某些原因,我不得不使用完全绝对路径,例如c:\Progra


同样,这是一个可怕的黑客行为,99%的时候我会说会有更好的方法来做你正在做的事情。试着重新思考你的方法

我不会用GUI程序进行测试。。。请尝试使用例如
dir
。您无法从web服务器上运行的PHP脚本打开GUI,因为Apache服务没有关联的桌面,因此Windows不知道在何处显示GUI。不过,只要相关程序没有执行检查以验证GUI是否成功显示(实际上不确定这是否可行),就可以启动该过程。您可以通过将Apache正在运行的用户更改为您正在登录的用户来解决此问题,这样该用户就有了一个关联的桌面,但从安全角度来看,这不是一个好主意。@DaveRandom感谢您提供的信息,这正是我担心的=/我将尝试找到替代方案!谢谢,但正如你所说的,这真的不推荐。我会设法找到其他的方法,一得到它就会在这里发布。我需要unity*.exe,因为转换器脚本使用unity特定的类。。。但我会设法找到另一种方法来解决这个问题!
array (size=2)
    0 => string 'Mono path[0] = 'C:/xampp/htdocs/ConvertObj/ConvertObj_Data/Managed'' (length=67)
    1 => string 'Mono path[1] = 'C:/xampp/htdocs/ConvertObj/ConvertObj_Data/Mono'' (length=64)