我一直在尝试执行.exe文件服务器端
换句话说,我真正想要的是在用户将文件上传到服务器之后执行.exe文件(转换此文件)。
我已经尝试打开记事本,看看问题是在我的可执行文件或PHP代码中,它也没有运行(虽然如果我检查任务管理器,我可以看到它有一个属于SYSTEM的notepad.exe进程用户)。我猜这是违反Windows上的一些安全措施的
我应该说我在Windows 7 x64上运行XAMPP。
这就是我正在做的事情:
exec("cd ../../ConvertObj/ && ConvertObj.exe", $data, $ret);
//for debuggging
var_dump($data);
var_dump($ret);
正如你所看到的,我也试图读取输出以试图找到问题。
现在,你可能想知道为什么我也将它标记为unity3d。此可执行文件是Unity3d独立.exe。对于我所读到的,有一个命令行参数允许Unity3d在没有GUI的情况下运行但不幸的是,这是一个仅PRO的参数...我真的不介意在服务器上看到GUI xD
所以,我得到的输出(使用unity3d .exe)是
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)
我虽然有点奇怪。我的猜测是windows阻止服务器上的所有GUI应用程序,因为dir命令完美无缺,我认为这两行是Unity3D抱怨的东西...... 有什么想法吗?
答案 0 :(得分:0)
我以前必须这样做。 在受限用户的封闭(局域网)环境中,我一起攻击了这个。
(为了记录,这不是我感到自豪的东西,但它起作用并且一直持续到今天,如果这是供一般公众使用的话,我不建议这样做)
在XP中,你可以在apache服务上检查“允许此服务与桌面交互”。这在W7中不起作用,同样根据我的经验,上面的评论建议,将服务设置为使用apache用户...这也不起作用。
在W7中,我知道使其工作的唯一方法是停止在服务菜单中将apache作为服务运行(将启动设置为手动)。然后使用httpd.exe并在启动项中创建快捷方式。
另外,由于某些原因,我不得不使用完整的绝对路径,例如。 C:\ PROGRA ...
再次,这是一个可怕的黑客,99%的时间我会说有一个更好的方式来做你正在做的事情。尝试重新思考你的方法。