2010-02-22 5 views
5

को एक दूरस्थ ज़िप फ़ाइल निकालने एक बार सर्वर बी प्राप्त करता है एक दूरस्थ सर्वर एसर्वर सर्वर से> पुन: प्राप्त करें और मैं जो उद्देश्य है सर्वर बी पर एक WP प्लगइन फ़ाइल है स्थानीय सर्वर निर्देशिका

से एक ज़िप फ़ाइल को पुनः प्राप्त करने के लिए है ज़िप फ़ाइल, इसे सामग्री निकालना चाहिए और फ़ाइलों को किसी मौजूदा फाइल को ओवरराइट करने पर सर्वर बी पर एक विशिष्ट फ़ोल्डर में कॉपी करना चाहिए।

मेरे पास कुछ कोड है जो मैंने एक फ़ाइल से उधार लिया है जो एक ही चीज करने के लिए उपयोग और अपलोडर है और मैं इसे ऊपर वर्णित सर्वर प्रक्रिया में स्वचालित सर्वर के लिए फिर से करना चाहता हूं। लेकिन इस प्लगइन को सक्रिय करने का प्रयास करते समय मुझे घातक त्रुटि मिल रही है।

function remote_init() 
{ 
    openZip('http://myserver.com/upgrade.zip'); 
    $target = ABSPATH.'wp-content/themes/mytheme/'; 
} 


function openZip($file_to_open, $debug = false) { 
    global $target; 
    $file = realpath('/tmp/'.md5($file_to_open).'.zip'); 

// $ फ़ाइल हमेशा खाली होती है। इस मामले में realpath का उपयोग नहीं कर सकते हैं। क्या करें?

$client = curl_init($file_to_open); 
    curl_setopt(CURLOPT_RETURNTRANSFER, 1); 

    $fileData = curl_exec($client); 

    file_put_contents($file, $fileData); 

    $zip = new ZipArchive(); 
    $x = $zip->open($file); 
    if($x === true) { 
     $zip->extractTo($target); 
     $zip->close(); 

     unlink($file); 
    } else { 
     if($debug !== true) { 
      unlink($file); 
     } 
     die("There was a problem. Please try again!"); 
    } 
} 


add_action('init','remote_init'); 

उत्तर

1

मैं मैनुअल में एक त्वरित जांच किया था, और लाइन पर एक मामूली त्रुटि 5.

$target = ABSPATH .'wp-content/themes/mytheme/'; 
function openZip($file_to_open, $debug = false) { 
    global $target; 
    $file = ABSPATH . '/tmp/'.md5($file_to_open).'.zip'; 
    $client = curl_init($file_to_open); 
    curl_setopt($client, CURLOPT_RETURNTRANSFER, 1); //fixed this line 

    $fileData = curl_exec($client); 

    file_put_contents($file, $fileData); 

    $zip = new ZipArchive(); 
    $x = $zip->open($file); 
    if($x === true) { 
     $zip->extractTo($target); 
     $zip->close(); 

     unlink($file); 
    } else { 
     if($debug !== true) { 
      unlink($file); 
     } 
     die("There was a problem. Please try again!"); 
    } 
} 
+0

वहां जा रहा है। एक कम त्रुटि। अब हमारे पास है: चेतावनी: file_put_contents() [function.file-put-content]: फ़ाइल नाम खाली नहीं हो सकता है। साथ ही, मैं $ लक्ष्य के लिए मूल्य कहां सेट करूं? Remote_init() फ़ंक्शन में? $ target = ABSPATH.'wp-content/themes/mytheme/'; –

+0

मैंने उपरोक्त कोड बदल दिया। दुबारा कोशिश कीजिये। ABSPATH परिभाषित किया गया है, है ना? – Jonah

+0

योना, मैं वास्तव में आपको इस पर चिपके रहने की सराहना करता हूं। ABSPATH को परिभाषित किया गया है, हालांकि, यह गलत प्रतीत होता है ... echo ($ target) रिटर्न: /home/myaccount/public_html/mysiteaddress//tmp/47393ca1964f2997cdee4b500721aca8.zip –

0
function openZip($file_to_open, $debug = false) { 
    global $target; 
    $file = realpath('/tmp/'.md5($file_to_open).'.zip'); 
    $client = curl_init($file_to_open); 
    curl_setopt(CURLOPT_RETURNTRANSFER, 1); 

    $fileData = curl_exec($client); 

    file_put_contents($file, $fileData); 

    $zip = new ZipArchive(); 
    $x = $zip->open($file); 
    if($x === true) { 
     $zip->extractTo($target); 
     $zip->close(); 

     unlink($file); 
    } else { 
     if($debug !== true) { 
      unlink($file); 
     } 
     die("There was a problem. Please try again!"); 
    } 
} 
+0

@prodigitalson था> जवाब के लिए धन्यवाद। मैं इसे समग्र समाधान में एकीकृत करने की कोशिश कर रहा हूं, लेकिन मुझे अभी भी घातक त्रुटि मिल रही है। मैंने आपके उत्तर के बाद मूल कोड को अपने कोड के साथ संपादित किया है। क्या आप remote_init() बिट्स पर एक नज़र डाल सकते हैं और मुझे बता सकते हैं कि आपको क्या समस्या हो सकती है? –

+0

@ स्कॉट बी> prodigitalson 'openZIP()' समारोह में एक curl कॉल डाल दिया। मुझे लगता है कि आपको हटाए गए फ़ाइल (myserver.com/upgrade.zip) के साथ 'openZIP()' का उपयोग '$ file_to_open तर्क' के रूप में करना होगा। – Jonah

+0

मदद योना के लिए धन्यवाद। मुझे अभी भी एक त्रुटि मिल रही है: चेतावनी: curl_setopt() के लिए गलत पैरामीटर गिनती मैंने आपके सुझाव को दर्शाने के लिए मूल प्रश्न में कोड संपादित किया है। कोई विचार? –

संबंधित मुद्दे