Php 强制下载损坏的文件重写的文件内容

Php 强制下载损坏的文件重写的文件内容,php,html,header,download,mime-types,Php,Html,Header,Download,Mime Types,PHP强制下载的另一个问题。它在工作,然后我做了一些事情,但现在不行了 现在开始(对于我接受的每种文件类型都有if语句,但仅显示一个就足以帮助诊断问题): 最终的结果是,它强制下载具有正确文件名和正确扩展名的文件。它不会触发任何类型的损坏文件错误。但是,当我打开文件时,内容丢失了。如果是word文档,它将拒绝打开。如果是文本文档,文本将被更改为一系列php错误,如下所示: 警告:readfile($file)[function.readfile]:无法打开流:第68行的/home/myhost

PHP强制下载的另一个问题。它在工作,然后我做了一些事情,但现在不行了

现在开始(对于我接受的每种文件类型都有if语句,但仅显示一个就足以帮助诊断问题):

最终的结果是,它强制下载具有正确文件名和正确扩展名的文件。它不会触发任何类型的损坏文件错误。但是,当我打开文件时,内容丢失了。如果是word文档,它将拒绝打开。如果是文本文档,文本将被更改为一系列php错误,如下所示:


警告:readfile($file)[function.readfile]:无法打开流:第68行的/home/myhost/public\u html/wwww.mydomain.com/pagethatforceddownload.php中没有此类文件或目录

然后,它为每一行提供了一个标题错误(即使包含在if子句中的那些不应该满足其条件的内容:

警告:无法修改标题信息-标题已由/home/myhost/public_html/wwww.mydomain.com/pagethatforceddownload.php:68中的/home/myhost/public_html/wwww.mydomain.com/pagethatforceddownload.php第69行发送

我真的迷路了。任何帮助都将不胜感激。我终于让我的网站上的所有东西都正常工作了。砰,我意识到我遇到了这么大的麻烦。

这句话是错误的:

if ($ext = pdf){
应该是:

if ($ext == "pdf"){
readfile($file);
你可以加上:

if($ext == "pdf" && file_exists($file)) {
以确保获得有效的文件

这也是错误的:

readfile('$file');
应该是:

if ($ext == "pdf"){
readfile($file);

非常感谢。我总是有点困惑什么时候使用“或两者都不是。任何关于一些基本阅读的建议都可以澄清。使用简单的引号,php永远不会查看字符串中是否有变量,因此即使您之前声明了$variable,“a$variable”也会始终给出'a$variable'。使用双引号,php将搜索字符串中的变量并用值替换。“a$variable”将成为“变量的值”。查看了解更多信息。此外,如果我的回答对您有帮助,请