मुझे PHP अपलोड स्क्रिप्ट के साथ इस अजीब समस्या का सामना करना पड़ रहा है। कृपया किसी से कुछ मदद मिलने की उम्मीद है।

नीचे इस समस्या का विवरण दिया गया है:

DOCUMENT_ROOT "/var/www/html" है

PHP अपलोड "/ var/www/html/uploads" नामक फ़ोल्डर में ठीक काम करता है

"/var/www/html/folder" पर अलग वेबपेज होस्ट करने वाली एक अन्य निर्देशिका है वही PHP upload.sh स्क्रिप्ट "/var/www/html/directory/folder" निर्देशिका में फ़ाइलें अपलोड नहीं कर सकती है।

फ़ोल्डर अनुमति को "/var/www/html/directory/folder" और "/var/www/html/uploads" दोनों के लिए 0777 पर सेट किया गया है, दोनों फ़ोल्डरों में समान अपलोड स्क्रिप्ट का उपयोग किया जाता है।

नीचे मान दोनों फ़ोल्डरों में स्थित upload.php में सेट है।

$uploads = $_SERVER['DOCUMENT_ROOT'] . "folder/uploads/files/"

मैंने निम्नानुसार $uploads में पूर्ण पथ सेट करने का प्रयास किया है लेकिन काम नहीं किया:

$upload_dir = "/var/www/html/files/"

नीचे त्रुटि के साथ अपलोड विफल हो रहा है:

Message: fopen(var/www/html/folder/uploads/files/filename.pdf): failed to open stream: No such file or directory
FPDF error: Unable to create output file:(/var/www/html/folder/uploads/files/filename.pdf)

कोई विचार है कि सर्वर "/var/www/html/folder" से upload.php को "/var/www/html/folder/uploads/" निर्देशिका में लिखने की अनुमति क्यों नहीं दे रहा है।

किसी भी लॉग फ़ाइल में कोई संबंधित संदेश नहीं मिला।

============================================= ============

यह मानता है कि PHP /var/www/html/folder/uploads/files/ में mkdir करने में सक्षम नहीं है।

कोड का टुकड़ा जो निर्देशिका बनाता है वह है:

  $uploadPath = "folder/uploads/files/";
  $dir = $_SERVER['DOCUMENT_ROOT'] . $uploadPath;

    if (!is_dir($dir)) @mkdir($dir, 0777);
    return $uploadPath;

कोई विचार है कि उपरोक्त एमकेडीआईआर कोड के साथ ऐसा करने में असमर्थ क्यों है?

धन्यवाद।

php
1
BBT 12 जुलाई 2018, 05:46
यह शायद है, लेकिन आप एक अलग फ़ोल्डर यानी/var/www/html/folder/uploads/---var/www/html/folder/uploads/files/ लिखने/खोलने की कोशिश कर रहे हैं।
 – 
jeff
12 जुलाई 2018, 06:44
हाय जेफ, उत्तर के लिए धन्यवाद। यह एक सबडायरेक्टरी है और इसके लिए 777 परमिशन भी दे चुके हैं। मैं समझ नहीं पा रहा हूं कि यह/var/www/html/folder/uploads/ के भीतर फ़ाइल क्यों नहीं बना सकता है।
 – 
BBT
12 जुलाई 2018, 08:38

2 जवाब

सुनिश्चित करें कि स्क्रिप्ट चलाते समय फ़ाइल /var/www/html/folder/uploads/files/filename.pdf कहीं भी खुली नहीं है। अगर यह कहीं और खुला है तो TCPDF इसे नहीं खोल सकता।

0
Divyesh Jesadiya 10 जिंदा 2019, 16:26

जो लोग समान समस्याओं का सामना कर रहे हैं, उनके लिए पुनरावर्ती ध्वज जोड़ने के बाद मेरी समस्या का समाधान हो गया। मेरा mkdir कमांड निम्नानुसार बदल दिया गया था:

से:

if (!is_dir($dir)) @mkdir($dir, 0777);

प्रति:

if (!is_dir($dir)) @mkdir($dir, 0777, true);
0
Nico Haase 10 जिंदा 2019, 16:39