PHP: Как получить доступ к папке загрузки вне корневого каталога?

Как мне создать PHP-скрипт / страницу, которая позволит пользователям / покупателям загружать zipped-файлы (продукты), хранящиеся в папке загрузки, расположенной за пределами корневого каталога? Я использую сервер Apache. Пожалуйста помоги!

Благодаря! Пол Г.

Я считаю, что то, что вы пытаетесь выполнить (поток существующего zip-файла через php), можно сделать так же, как и здесь: LAMP: Как создать .Zip больших файлов для пользователя «на лету», без перекоса диска / процессора


Немного измененная версия кода из этого ответа:

// make sure to send all headers first // Content-Type is the most important one (probably) // header('Content-Type: application/x-gzip'); $filename = "/path/to/zip.zip"; $fp = fopen($filename, "rb"); // pick a bufsize that makes you happy $bufsize = 8192; $buff = ''; while( !feof($fp) ) { $buff = fread($fp, $bufsize); echo $buff; } pclose($fp); 

Вы можете найти более подробную информацию в ссылке, предоставленной @soac, но вот отрывок из моего кода только для файлов PDF:

 <?php $file = ( !empty($_POST['file']) ? basename(trim($_POST['file'])) : '' ); $full_path = '/dir1/dir2/dir3/'.$file; // absolute physical path to file below web root. if ( file_exists($full_path) ) { $mimetype = 'application/pdf'; header('Cache-Control: no-cache'); header('Cache-Control: no-store'); header('Pragma: no-cache'); header('Content-Type: ' . $mimetype); header('Content-Length: ' . filesize($full_path)); $fh = fopen($full_path,"rb"); while (!feof($fh)) { print(fread($fh, filesize($full_path))); } fclose($fh); } else { header("HTTP/1.1 404 Not Found"); exit; } ?> 

Обратите внимание, что это открывает PDF-файл в браузере, а не загружает его, хотя вы можете сохранить файл локально внутри читателя. Использование readfile() , вероятно, будет более эффективным (и более чистым кодом), чем старый способ открытия файла с помощью дескриптора так, как я делаю в этом примере.

 readfile($full_path);