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