我有一个脚本设置,因此用户可以通过php脚本(一次使用链接)下载文件,但是当文件大小达到1GB时,它将无法进一步下载。
它恰好在1GB处停止
php.ini中是否有一些设置可以让我将其调整到1GB以上?我尝试更改下面的大多数设置,但看不到任何与1GB文件大小有关的内容...
示例:www.url.com/file.php?download=filename.zip(使用以下php代码)
<?php
$DownloadableFilesDirectory = "/dl/secret";
$FileRenamePrependCharacters = "odroid_";
if( ! empty($FileRenamePrependCharacters) ) { $FileRenamePrependCharacters =
ltrim($FileRenamePrependCharacters); }
$DownloadableFilesDirectory =
preg_replace('/^\/*/','/',$DownloadableFilesDirectory);
$DownloadableFilesDirectory =
preg_replace('/\/*$/','',$DownloadableFilesDirectory);
$Directory = $_SERVER['DOCUMENT_ROOT'].$DownloadableFilesDirectory;
if( empty($_GET['download']) ) { exit; }
if( empty($_GET['savefile']) ) { $_GET['savefile'] = $_GET['download']; }
$Dfile = $Directory.'/'.$_GET['download'];
$size = filesize($Dfile);
if( ! $size )
{
echo '<p><b>The download file is empty or was not located.</b></p>';
exit;
}
$ctype = 'application/octet-stream';
header('Cache-control: private');
header("Content-Type: $ctype");
header('Content-Disposition: attachment; filename="'.$_GET['savefile'].'"');
header('Content-Transfer-Encoding: binary');
header("Content-Length: $size");
@readfile($Dfile);
if( empty($FileRenamePrependCharacters) ) { unlink($Dfile); }
else
{
$pieces = explode('/',$Dfile);
$pieces[count($pieces)-1] = $FileRenamePrependCharacters .
$pieces[count($pieces)-1];
rename($Dfile,implode('/',$pieces));
}
exit;
?>
答案 0 :(得分:0)
除非您在错误日志中遇到类似PHP Fatal error: Maximum execution time of ??? seconds exceeded in foo.php on line ?
的错误,或者愚蠢地将所有下载的内容保存在ram中,并且在错误日志中得到类似PHP Fatal error: Allowed memory size of ??? bytes exhausted (tried to allocate ??? bytes) in foo.php on line ?
的错误(并且您不会为此,按照您发布的代码进行操作),这不是PHP问题,而是您所使用的Web服务器的问题。 (nginx?apache?lighthttpd?微软的IIS?一些代理?一些负载均衡器ala Cloudflare?),在那里开始调查。