2011-02-24 24 views
12

मुझे PHP सर्वर 5.3.5 & आईआईएस 6 के साथ विंडोज सर्वर 2003 पर चल रहे एक PHP स्क्रिप्ट में finfo_open को कॉल करने में समस्या हो रही है। कॉल हमेशा घातक त्रुटि देता है: अपरिभाषित करने के लिए कॉल करें फ़ंक्शन finfo_open() में ...विंडोज PHP में php_fileinfo.dll और finfo_open का उपयोग करना PHP 5.3.5

थोड़ा पढ़ने के माध्यम से मुझे पता है कि fileinfo कार्यक्षमता विंडोज़ PHP स्थापना में डिफ़ॉल्ट रूप से शामिल नहीं है, हालांकि मैं कोशिश नहीं करता कि यह कुछ भी काम कर रहा है। टिप्पणी # 3 में निर्देश यहां दिए गए हैं: http://www.php.net/manual/en/fileinfo.installation.php मदद नहीं की, और यह सबसे आधिकारिक दिखने वाला स्पष्टीकरण है जो मैं पा सकता हूं। वेब पर mime_magic dll की आवश्यकता के बारे में बहुत सारी जानकारी है लेकिन ऐसा लगता है कि यह अब 5.3 के रूप में आवश्यक नहीं है। इसके अलावा, मैंने http://pecl.php.net/package/Fileinfo पर पढ़ा है कि "PHP 5.3.0 के रूप में यह एक्सटेंशन डिफ़ॉल्ट रूप से सक्षम है"। क्या चल रहा है?

यह समस्या एक परीक्षण सर्वर पर है। मेरी स्थानीय मशीन पर मेरे पास xampp और PHP 5.3.1 है और कॉल ठीक काम करता है, इसलिए मैंने php_fileinfo.dll को स्थानीय से php \ ext परीक्षण पर कॉपी करने का भी प्रयास किया लेकिन इससे कोई फर्क नहीं पड़ता (मुझे पता है कि संस्करण हैं अलग, लेकिन मैंने पढ़ा कि 5.3 महत्वपूर्ण बिट है)।

इस पर कोई सलाह बहुत सराहना की जाएगी!

$finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $mime = finfo_file($finfo, $filepath); 

उत्तर

18

आप इसे पूरा करने के करीब हैं, केवल आपके अंत में कुछ छोटी कॉन्फ़िगरेशन गुम है।

Windows users must include the bundled php_fileinfo.dll DLL file in php.ini to enable this extension.

DLL फ़ाइल उदाहरण के लिए PHP 5.3.6 के साथ bundeled है यही कारण है, आप फ़ाइलों को यहां पा सकते हैं: PHP For Windows - Binaries and sources Releases

कृपया fileinfo usage and installation instructions देखते हैं। यह पहले से ही आपके PHP स्थापना के ext उपनिर्देशिका में स्थित होना चाहिए। यदि इसे फिर से वेबसाइट से डाउनलोड नहीं किया गया है (अपना PHP संस्करण चुनें) और इसे एक्सटेंशन निर्देशिका में रखें।

आप इसे सक्रिय करने के लिए तो निम्न पंक्ति अपने php.ini जोड़ने की जरूरत:

extension=php_fileinfo.dll 

खिड़कियों के तहत एक PHP एक्सटेंशन सक्रिय करने के लिए मानक प्रक्रिया है कि। आप यहाँ एक PHP एक्सटेंशन को कैसे सक्रिय करें के बारे में अधिक जानकारी प्राप्त कर सकते हैं: Installation of extensions on Windows। यदि आपको php.ini फ़ाइल का पता लगाने में समस्याएं हैं, तो कृपया PHP installation instructions - Installation on Windows systems देखें।

+0

आपके इनपुट हाकर के लिए धन्यवाद लेकिन यह वही है जो मैं पहले से ही कोशिश कर रहा हूं। आपके द्वारा प्रदान किया गया लिंक 'fileinfo उपयोग और स्थापना निर्देश' जैसा कि मैंने अपनी पहली पोस्ट में पहचाना है। मैंने php.ini में एक्सटेंशन को सक्षम किया और पहले आईआईएस को फिर से शुरू किया, फिर पूरे सर्वर को बिना किसी बदलाव के। अभी मैं एक फ़ाइल के माइम प्रकार को अपलोड करके और अपने डेटाबेस में संग्रहीत करके इस समस्या के आसपास काम कर रहा हूं, फिर डाउनलोड पर फ़ाइलस्ट्रीम बनाने के लिए इसका उपयोग कर रहा हूं। – tomfumb

+1

@ user519575 - आपका PHP संस्करण क्या है? मुझे कल विंडोज़ बॉक्स पर fileinfo मॉड्यूल स्थापित करने की आवश्यकता थी और यह उस तरह से काम करता था (जबकि यह पहले गायब था)। मैं PHP 5.3.6 का उपयोग कर रहा हूँ। आप किस सर्वर इंटरफेस का उपयोग कर रहे हैं? क्या आप सही PHP.ini संपादित कर रहे हैं? क्या आप php स्क्रिप्ट में लोड मॉड्यूल सूचीबद्ध कर सकते हैं और उस सूची का fileinfo हिस्सा है? – hakre

+0

क्या आप इसे ठीक कर चुके हैं। finfo phpinfo() में है और सबकुछ लेकिन फ़ंक्शंस अभी भी अपरिभाषित के रूप में लौट रहे हैं? IIS7 – zanderwar

4

इस लाइन

extension=php_fileinfo.dll 

मेरी php.ini में टिप्पणी की गयी है तो मैं यह uncommented और फिर मेरी XAMPP सर्वर को पुनः आरंभ।