我有个问题。我有一个服务,它给了我.exe文件,他们声称这实际上是zip档案。自解压档案。问题是,我正在用我的应用程序(php)将其下载到服务器,并且需要在下载到本地计算机之前将其提取出来。我试着把.exe文件下载到本地计算机上——它是在windows上自解压到/temp目录的,而不是自启动的FLASH播放器。
$zip=zip_open($myfile);在print_r($zip)中给出:1zip->open也没有结果。将.exe更改为.zip不允许winzip或windows上的其他类型的解压缩器打开它——winzip也无法打开.exe。
现在我不知道该怎么处理。如果有人能给我建议的话。
尝试使用系统命令将程序作为可执行文件执行
从一个你不100%信任的外部源执行文件从来都不是一个好主意。
zip的info-zip版本允许您从自解压zip文件中删除SFX存根(带有-J标志),将其转换回普通zip文件。
源代码是免费提供的。
制作一个自解压的zip文件需要在zip文件前准备SFX二进制代码,然后将二进制存根的大小附加到生成的文件中——但我不确定数据是如何表示的——但对可用代码进行一点反向工程应该可以清楚地表明这一点。
嗯。。。如果您的PHP服务器是Windows,那么作为系统命令执行它应该不会有问题。否则,就有点棘手了。我听说unzip system命令会解压缩自解压的zip文件,但我目前还没有权限尝试它。
如果你在共享主机上,很可能你做不到。
如果你认为执行exe文件后,它会提取其内容,那么你可以使用exec
函数运行.exe文件,如下所示:
exec("d:\example\php_exe\1436.exe");
还可以使用system
函数运行外部程序。
如果你想知道有什么区别:
PHP-exec()vs system()vs passthru()