0

我有个问题。我有服务给我 .exe 文件,他们声称实际上是 zip 存档。自解压档案。问题是我正在使用我的应用程序(php)将其下载到服务器,并且需要在没有下载到本地计算机的情况下将其提取到那里。我已经尝试将 .exe 文件下载到本地计算机 - 它在 Windows 上自动解压到 /temp 目录,而不是自动启动 FLASH 播放器。

$zip = zip_open($myfile); 给出 print_r($zip): 1 zip->open 也没有结果。将 .exe 更改为 .zip 不会让 winzip 或 Windows 上的其他类型的解压缩程序打开它 - .exe 也无法通过 winzip 打开。

现在我不知道如何处理它。如果有人可以建议请。

4

4 回答 4

2

尝试使用系统命令将程序作为可执行文件执行

于 2011-06-28T09:21:53.623 回答
1

从您不 100% 信任的外部来源执行文件绝不是一个好主意。

zip的info-zip版本允许您从自解压 zip 文件(带有 -J 标志)中删除 SFX 存根,并将其转换回普通的 zip 文件。

源代码是免费提供的。

制作自解压 zip 文件是在 zip 文件前面加上 SFX 二进制代码,然后将二进制存根的大小附加到生成的文件中——但我不确定数据是如何表示的——但有点对可用代码进行逆向工程应该可以清楚地说明这一点。

于 2011-06-28T09:35:11.577 回答
0

好吧,如果您认为执行 exe 文件后,它会提取其内容,那么您可以使用exec函数来运行 .exe 文件,如下所示:

exec("d:\\example\\php\_exe\\1436.exe");

你也可以使用system函数来运行外部程序。

如果你想知道有什么区别:

PHP - exec() vs system() vs passthru()

于 2011-06-28T09:27:58.713 回答
0

好吧...如果您的 PHP 服务器是 Windows,那么将其作为系统命令执行应该不会有问题。否则,这有点棘手。我听说 unzip 系统命令将解压缩自解压的 zip 文件,但我目前无法访问 Linux 机器来尝试它。

如果您使用的是共享主机,您可能无法做到这一点。

于 2011-06-28T09:25:40.243 回答