I made a download script in PHP that was working until yesterday. Today I tried to download one of the files only to discover that suddenly it stopped working:
PHP Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 119767041 bytes) in E:homeecnopontawebalunodownload.php on line 52
For some reason PHP is trying to allocate the size of the file in the memory, and I have no idea why. If the file size is smaller than the memory limit, I can download it without a problem, the problem is with bigger files.
I do know that it can be corrected by increasing the memory limit in php.ini or even use ini_set on the code but I would like a more accurate way to fix this and an answer to why it stopped working.
Here's my code:
$file = utf8_decode($_GET['d']);
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename='.$file);
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$file = "uploads/$curso/$file";
ob_clean();
flush();
readfile($file);
echo "<script>window.history.back();</script>";
exit;
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…