LOAD_FILE ()
MySQL फ़ंक्शन:
जैसा कि आप देख सकते हैं, आपके द्वारा LOAD_FILE()
पर कॉल करने के असंख्य कारण हैं विफल:
-
फ़ाइल उस कंप्यूटर पर मौजूद होनी चाहिए जहां MySQL सर्वर चलता है। यह हमेशा वही कंप्यूटर नहीं होता है जहां PHP स्क्रिप्ट चलती है (और यह सुरक्षा कारणों से होता है)। यदि वे अलग-अलग कंप्यूटरों पर चलते हैं तो संभवतः आप
LOAD_FILE()
. का उपयोग नहीं कर सकते हैं . केस बंद।सिद्धांत रूप में आप
FTP
का उपयोग कर सकते हैं याएसएफटीपी
फ़ाइल को उस कंप्यूटर पर स्थानांतरित करने के लिए जहां MySQL चलता है लेकिन उन्हीं सुरक्षा कारणों से, शायद आपके पास उस कंप्यूटर तक पहुंच नहीं है। -
मान लें कि आपके मामले में PHP और MySQL दोनों एक ही कंप्यूटर पर चलते हैं,
/images/Picture.jpg
URL का पथ घटक है, फ़ाइल सिस्टम पर पथ नहीं है। आपdirname()
का इस्तेमाल कर सकते हैं और__DIR__
छवियों
. के लिए पथ बनाने के लिए निर्देशिका वर्तमान स्क्रिप्ट के पथ से शुरू हो रही है। -
आप जिस उपयोगकर्ता का उपयोग MySQL सर्वर से कनेक्ट करने के लिए करते हैं, उसके पास
फ़ाइल
विशेषाधिकार। उपयोगकर्ता को डीबीए द्वारा विशेषाधिकार प्रदान किया जाता है। -
फ़ाइल सभी के द्वारा पठनीय होनी चाहिए। यह सबसे आसान हिस्सा है। जब आप
ls -l
run चलाते हैं फ़ाइल पर, फ़ाइल अधिकारों के कॉलम में अंतिम तीन प्रतीकrw-
. होने चाहिए याr--
(निष्पादन योग्य बिट सेट होने का कोई मतलब नहीं है)। -
max_allowed_packet<का डिफ़ॉल्ट मान /कोड>
सिस्टम वैरिएबल4 MiB
. है लेकिन एक डीबीए इसे बदल सकता है। आपचुनें @@max_allowed_packet फ्रॉम ड्यूल
. चला सकते हैं इसका वर्तमान मूल्य जानने के लिए। -
अगर
secure_file_priv
सिस्टम वैरिएबल सेट है तो आपके द्वारा प्रदान किया जाने वाला पथ इस निर्देशिका के सापेक्ष होना चाहिए। फिर से, आपचुनें @@secure_file_priv from Dual
. चला सकते हैं इसका वर्तमान मूल्य ज्ञात करने के लिए।