Не используйте passthru()
для этого, вы открываете себя для CLI Injection и производительность ужасна. readfile()
существует только для этого.
readfile($filepath);
Существуют небольшие издержки при прохождении через PHP по сравнению с прямой ссылкой, но мы обычно говорим о миллисекундах. Однако браузер не сможет запросить 206 Partial
при использовании readfile()
, если вы не кодируете его поддержку или не используете что-то вроде PEAR::HTTP_Download
.
РЕДАКТИРОВАТЬ: Кажется, вы используете passthru()
, потому что, очевидно, readfile()
не обрабатывает> 2 ГБ файлов должным образом (у меня никогда не было этой проблемы с readfile()
, на самом деле я только что протестировал его с Файл 7,2 Гб и все работало нормально). В этом случае хотя бы экранируйте ваши параметры.
function readfile_ext($filepath) {
if(!file_exists($filepath))
return false;
passthru('cat ' . escapeshellarg($filepath));
return true;
}