Tôi cần một giải pháp mà có thể làm việc trên các trang web Azure (IIS) và gặp khó khăn với việc tạo tập tin mới trên máy chủ sử dụng phương pháp từ câu trả lời khác. Các giải pháp mà làm việc cho tôi là sử dụng thư viện TbsZip nhỏ để nén, mà không yêu cầu phải viết tập tin bất cứ nơi nào trong máy chủ - nó chỉ trả lại trực tiếp thông qua HTTP.
chủ đề này là cũ, nhưng cách tiếp cận này có thể là nhiều hơn một chút câu trả lời chung chung và đầy đủ, vì vậy tôi đăng các mã như thay thế:
// Compress all files in current directory and return via HTTP as a ZIP file
// by buli, 2013 (http://buli.waw.pl)
// requires TbsZip library from http://www.tinybutstrong.com
include_once('tbszip.php'); // load the TbsZip library
$zip = new clsTbsZip(); // instantiate the class
$zip->CreateNew(); // create a virtual new zip archive
// iterate through files, skipping directories
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.'));
foreach($objects as $name => $object)
{
$n = str_replace("/", "\\", substr($name, 2)); // path format
$zip->FileAdd($n, $n, TBSZIP_FILE); // add fileto zip archive
}
$archiveName = "backup_".date('m-d-Y H:i:s').".zip"; // name of the returned file
$zip->Flush(TBSZIP_DOWNLOAD, $archiveName); // flush the result as an HTTP download
Và đây là toàn bộ article on my blog.
Nguồn
2013-04-22 20:52:50
Dường như một giới hạn kỳ lạ. –
Nhưng không hoàn toàn phổ biến, nhiều máy chủ chỉ chặn sử dụng hoàn toàn thay vì người dùng chjail'ing. – UnkwnTech
Đúng, nhưng nó là ngớ ngẩn, do sức mạnh của PHP để tương tác với hệ thống tập tin. –