PHP 文件传输 - 回声破坏了东西,调试的替代方案?

PHP File Transer - echo breaks things, alternate for debugging?

看看我的另一个

我已经成功设置了一个简单的文件传输,但我注意到尝试回显页面上的任何内容会损坏文件,使其无法打开。

代码如下:

$filename = $_GET['filename']; 
$dir = "C:/Users/Me/Desktop/"; 
$file = realpath($dir . $filename);   

//echo "$filename</br>$dir</br>$file";

if (file_exists($file)) {       
    header('Content-Disposition: attachment; filename="'.basename($file).'"');  
    header('Content-Type: application/octet-stream');    
    header('Content-Length: ' . filesize($file)); 
    readfile($file);
    exit;
}

这工作得很好,但如果我取消注释回显,下载的文件已损坏并且无法打开。

这是因为不知何故,回显被写入要下载的文件吗?也许(可能)我没有完全了解上面发生的过程。

显然,如果上述代码执行成功,则不会显示回显,但您还推荐哪些其他调试方法?显然,回显变量值并不总是有效。还有其他选择吗?

是的,如果您回显某些数据,它将成为您发送的任何文件的一部分并可能损坏它。

我建议您查看 error_log 函数。它会让您写入日志文件,这不会影响输出。您可以定期查看日志并检查是否有任何重要错误。