PHP open.exe服务器端


PHP open .exe server-side

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

这就是我正在做的:

exec("cd ../../ConvertObj/ && ConvertObj.exe", $data, $ret);
//for debuggging
var_dump($data);
var_dump($ret);

正如你所看到的,我也在尝试读取输出,试图找到问题所在。现在,你可能想知道为什么我也把它标记为unity3d。这个可执行文件是一个Unity3d独立.exe。对于我所读到的,有一个命令行参数,它允许Unity3d在没有GUI的情况下运行,但不幸的是,这是一个仅限PRO的参数。。。我真的不介意在服务器xD
上看到GUI所以,我得到的输出(使用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在抱怨什么。。。有什么想法吗?

我以前不得不这么做。在一个有受限用户的封闭(lan)环境中,我把这个黑到了一起。

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

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

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

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

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