PHP下载是0字节来自USB,权限?

时间:2016-08-14 09:34:57

标签: php download

我在使用php下载文件时遇到问题。它一直在工作,直到我最近在usb棒上安装了我的网络服务器,以便在上线之前测试一些新的修改。

一切正常,直到我在USB记忆棒上测试它,但是从usb记忆棒运行服务器之后我能够下载一个文件,但它是0字节。

我使用的是一种相当标准的下载技术,已在互联网上记录:

//test if a parameter was passed
if (isset($_GET['download'])) {
if (!empty($_GET['download'])) {
$files = $_GET['download'];
download($files);
}
}

//download function
function download($files){

if(!file_exists($files)){
die('Error');
}else{
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename='.basename($path));
header('Content-Type: application/octet-stream');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
ob_start();
flush();
readfile($files);
exit;
}
}

我相信检查文件是否存在行会阻止下载存在的文件的能力......但是我无法下载空文件。

目前我不相信它可能是一个特权问题但是由于文件确实存在于usb和harddrive上而无法验证在线查看所以它可能通过测试但是不允许从usb读取?

1 个答案:

答案 0 :(得分:1)

您使用错误的变量来检查文件大小,因此您总是告诉收件人大小为零。

您应该filesize($files)