Drupal file_copy काम नहीं कर रही है


11

मेरे पास निम्नलिखित कोड हैं:

$main_image = glob('main*.{jpeg,gif,png,jpg,JPEG,JPG,PNG}', GLOB_BRACE);
if (count($main_image) != 1) 
    die("Could not find main picture !");  

$file_path = drupal_realpath($main_image[0]);
$file = (object) array(
            'uid' => $userID,
            'uri' => $file_path,
            'filemime' => file_get_mimetype($file_path),
            'display' => 1,
            'filename' => $main_image[0]
);
// copy the file in the correct folder
$destination = "public://galerii_imagini/" . $file->filename;
 if ($file = file_copy($file, $destination, FILE_EXISTS_REPLACE)) {} else {
    die("Could not copy " . $file_path . " in " . $destination);
}

क्या मेरे कोड में कुछ गड़बड़ है? मुझे हमेशा स्टेटमेंट के अंदर डाई कमांड से संदेश मिलता है।

किसी भी तरह की सहायता को आभार समझेंगे।

संपादित करें: स्टानिस्लाव अगापोव के लिए धन्यवाद, मुझे ड्रुपल से लॉग मिला। संदेश है:

फ़ाइल .... / main_ROSE2106.JPG को कॉपी नहीं किया जा सका, क्योंकि गंतव्य निर्देशिका सार्वजनिक: // galerii_imagini सही ढंग से कॉन्फ़िगर नहीं की गई है।

इसे सही तरीके से कॉन्फ़िगर करने के लिए मुझे क्या करना चाहिए? मैंने सार्वजनिक फाइलों के रूप में पथ साइटों / डिफ़ॉल्ट / फाइलों को / व्यवस्थापक / विन्यास / मीडिया / फाइल-सिस्टम में सेट किया है। क्या सेट करने के लिए कुछ और है?

# 2 संपादित करें: मैंने पूरे / साइटों / डिफ़ॉल्ट / फाइलों के पेड़ के लिए 777 सेट किया है।


2
सिस्टम लॉग में संदेशों को लिखने में त्रुटियों के मामले में फ़ंक्शन file_copyऔर इसके द्वारा कार्य file_unmanaged_copyकिया जाता है । क्या आपने "हाल के लॉग संदेश" रिपोर्ट को देखा? सबसे अधिक संभावना है कि आपको वहां उत्तर मिलेगा ...
स्टेनिस्लाव अगापोव

जाँच करें कि आपकी फ़ाइल निर्देशिका लेखन योग्य है या नहीं। यदि नहीं, तो इसे लिखने की अनुमति दें।

फ़ाइलें फ़ोल्डर में 777 अधिकार हैं।
sebastian.roibu

कैसे निर्देशिका की अनुमति के बारे में /sites/default/files/galerii_imagini?
जिमी को

2
@applecrusher यह बहुत बुरी सलाह है।

जवाबों:


1

क्या आप निश्चित हैं कि मार्ग sites/default/files/galerii_imagini मौजूद है और एक निर्देशिका है? आप इस त्रुटि को देख सकते हैं या तो यह मौजूद नहीं है या यदि यह मौजूद है लेकिन एक निर्देशिका के बजाय एक फ़ाइल है। यदि आप Drupal से galerii_imaginiनिर्देशिका बनाने की अपेक्षा करते हैं, तो आपको कॉल करने से पहले इस पंक्ति को जोड़ना होगा file_copy:

file_prepare_directory("public://galerii_imagini", FILE_CREATE_DIRECTORY);

Drupal 7.x स्रोत कोड की खोज के आधार पर, संदेश File %file could not be copied, because the destination directory %destination is not configured correctly.केवल उसी में उत्पन्न होता है file_unmanaged_copy, जिसे कहा जाता है file_copy। यह file_prepare_directoryगंतव्य पर पहले कॉल करता है, जैसे file_copyकि इसके मूल निर्देशिका पर। यह त्रुटि संदेश पैदा करता है जिसे आप केवल तभी देख रहे हैं जब दोनों कॉल विफल होते हैं। चूंकि यह file_prepare_directoryडिफ़ॉल्ट झंडे के साथ कॉल करता है , यह उस संदेश के साथ विफल हो सकता है अगर:

  • न तो गंतव्य पथ और न ही इसकी मूल निर्देशिका मौजूद है
  • गंतव्य पथ मौजूद नहीं है और इसकी मूल निर्देशिका मौजूद है लेकिन निर्देशिका नहीं है
  • या तो गंतव्य पथ या उसके मूल निर्देशिका मौजूद है, एक निर्देशिका है, लेखन योग्य नहीं है, और इसे लिखने योग्य बनाने के लिए अपनी अनुमतियाँ बदल रहा है

हालांकि, अंतिम स्थिति में, आपको अपने प्रश्न में रिपोर्ट किए जाने से ठीक पहले लॉग में एक और संदेश दिखाई देगा: The file permissions could not be set on %uri.चूंकि आपने उस संदेश को नहीं देखा है, इसलिए मैं केवल यह मान सकता हूं कि पहले दो मामलों में से एक सही है।


"galerii_imagini" मौजूद है और यह एक निर्देशिका है। ड्रुपल द्वारा लिखने योग्य है क्योंकि मैं इस गैलरी में मैन्युअल गैलरी बना सकता हूं जो छवियों को संग्रहीत करता है। क्योंकि मैं एक साझा होस्टिंग पर हूं और मुझे अतीत में अधिकारों की समस्या थी, मुझे यकीन नहीं है कि मैं फाइलज़िला में जो देख रहा हूं वह सही है, अधिकारों के बारे में।
sebastian.roibu
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.