php – .exe文件从服务器下载时损坏

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – .exe文件从服务器下载时损坏脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
首先:我是一个低级的网页设计师,他知道只有足够的 PHP是危险的,而且只要服务器管理就足够了.除非你很清楚,否则我可能不会理解你!

设置:我已经建立了一个网站,客户端将文件上传到特定目录,这些文件通过PHP提供,供用户下载.这些文件通常是50MB以上的可执行文件.客户端不希望他们压缩,因为他们觉得他们的用户不够精明,无法解压缩.我正在使用下面的PHP强制下载对话框并隐藏文件所在的目录.

这是Linux服务器,如果这有所不同.

问题:用户尝试下载后,某个文件会损坏.它是一个可执行文件,但是当它被单击时,会打开一个空白的DOS窗口.下载之前的原始文件打开完美.还有其他几个类似的文件经过相同的下载程序,所有这些都可以正常工作.

我尝试过的事情:我尝试上传压缩文件,然后在服务器上解压缩,以确保它在上传过程中没有损坏,没有运气.
我还将原始文件的二进制代码与不起作用的下载文件进行了比较,它们完全相同(因此PHP不会意外地在文件中插入任何额外内容).

这可能是我的downloaDFile函数中的标题的问题?我真的不确定如何解决这个问题……

这是下载PHP,如果它是相关的($filenamereplace在别处定义):

downloadFile("../DIRECTORY/files/$filenamereplace","$filenamereplace");

function downloadFile($file,$filename){    
    if(file_exists($file)) {
        header('Content-Description: File transfer');
        header('Content-tyPE: application/octet-stream');
        header('Content-DisposITion: attachment; filename="'.$filename.'"');
        header('Content-transfer-encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate,post-check=0,PRe-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        @ flush();
        readfile($file);
        exit;
    }
}

ETA Additonal信息:
– 已在同一台机器上完成工作/非工作文件的测试
– 如果它有任何区别,原始文件一个自定义图标.下载后,该文件具有通用空白文档图标.

Additonal信息:我认为这一点非常重要
我只是尝试直接下载文件(绕过触发上面的下载功能的下载链接).如果我只是通过它的URL下载文件并以这种方式下载它,下载的文件就是WORKS.所以我认为它必须与下载功能有关.但是什么

3/17主要修正 – 并已解决
所以今天早上醒来,我突然意识到我可能正在比较错误文件. (我已将它们重新保存为二进制文本,然后对它们进行比较.我没有意识到比较程序将采用并比较实际的exe文件).今天早上我尝试比较实际的exe文件,但有一点不同.有一行PHP代码被注入到文件的第一行.我调整PHP,问题得到解决. (它来自if / else语句,在我引用的代码中定义了teh $filenamereplace变量).再次感谢您的帮助,并抱歉误导您坚持文件内容相同!

“我还将原始文件的二进制代码与不起作用的下载文件进行了比较,它们完全相同(因此PHP不会意外地在文件中插入任何内容).”

如果这是真的,那么问题必须在于如何在下载后启动exe.它应该不是您的PHP代码的问题.

脚本宝典总结

以上是脚本宝典为你收集整理的php – .exe文件从服务器下载时损坏全部内容,希望文章能够帮你解决php – .exe文件从服务器下载时损坏所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。