بناء ملف القطران من الدليل في PHP دون إكسيك / في PassThru

StackOverflow https://stackoverflow.com/questions/333130

  •  22-07-2019
  •  | 
  •  

سؤال

وهكذا لدي العميل الذي هو المضيف الحالي لا يسمح لي لاستخدام القطران عبر إكسيك () / في PassThru () / إلخ وأنا بحاجة لعمل نسخة احتياطية من الموقع periodicly وprogrammaticly لذلك ليس هناك حل؟

وهذا هو خادم لينكس.

هل كانت مفيدة؟

المحلول 2

http://pear.php.net/package/Archive_Tar الذي يمكن donload لل حزمة القطران الكمثرى واستخدامها مثل هذا لإنشاء الأرشيف:

<?php
require 'Archive/Tar.php';
$obj = new Archive_Tar('archive.tar');
$path = '/path/to/folder/';
$handle=opendir($path); 
$files = array();
while(false!==($file = readdir($handle)))
 {
    $files[] = $path . $file;
 }

if ($obj->create($files))
 {
    //Sucess
 }
else
 {
    //Fail
 }
?>

نصائح أخرى

وPHP 5.3 يوفر طريقة أسهل بكثير لحل هذه المسألة.

وانظر هنا: http://www.php.net/manual/en /phardata.buildfromdirectory.php

<?php
$phar = new PharData('project.tar');
// add all files in the project
$phar->buildFromDirectory(dirname(__FILE__) . '/project');
?>

وهناك Archive_Tar المكتبة. وإذا كان هذا لا يمكن أن تستخدم لسبب ما، و الرمز البريدي التمديد قد يكون خيار آخر.

وأحتاج إلى حل من شأنه أن يعمل على مواقع أزور (IIS) واجهت مشكلة مع إنشاء ملفات جديدة على الملقم باستخدام أساليب من إجابات أخرى. وكان الحل الذي عملت بالنسبة لي لاستخدام صغيرة TbsZip مكتبة لل ضغط، والتي لا تتطلب لإرسال ملف في أي مكان في الخادم - انها عاد لتوه مباشرة عبر HTTP

وهذا موضوع قديم، ولكن هذا النهج قد يكون قليلا أكثر عمومية وإجابة كاملة، ولذا فإنني إضافة الكود كما بديل:

// 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

وهنا تكمن على بلدي بلوق .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top