2008-12-29 15 views
7

मुझे अपनी वेबसाइट पर mcrypt फ़ंक्शंस को सक्षम करने की आवश्यकता है, सिवाय इसके कि मैं एक साझा होस्ट (चल रहा लिनक्स) पर हूं और स्पष्ट रूप से php.ini फ़ाइल तक पहुंच नहीं है। पियर मॉड्यूल स्थापित करने के लिए विकल्प प्रतीत होते हैं लेकिन एक खोज ने मुझे बताया कि mcrypt उपलब्ध नहीं था। क्या कोई तरीका है कि मैं यह कर सकता हूं, मेरी मदद करने के लिए तकनीकी सहायता मांगने से कम?साझा होस्टिंग पर PHP एक्सटेंशन इंस्टॉल करना


अद्यतन: थोड़ा चारों ओर अधिक है, ऐसा लगता है जैसे मैं dl() समारोह का उपयोग करने के लिए गतिशील रूप रन टाइम पर एक पुस्तकालय लोड करने में सक्षम हो सकता है। चूंकि मैं केवल एक स्थान पर मैक्रिप्ट फ़ंक्शंस का उपयोग कर रहा हूं, इसलिए शायद प्रदर्शन करने के बाद मैं इसे करने से दूर हो सकता हूं (मुझे लगता है कि एक हिट है) न्यूनतम होना चाहिए। अब एकमात्र समस्या यह है कि libmcrypt.so फ़ाइल कैसे प्राप्त करें?


एक और अद्यतन: मैं Sourceforge से libmcrypt.tar.bz2 फ़ाइल डाउनलोड कर ली और ./configure चलाने के लिए, make, और फिर मेरे घर निर्देशिका में libmcrypt.so.4.4.8 फ़ाइल की प्रतिलिपि (libmcrypt.so के रूप में), लेकिन अब मैं नहीं कर सकता इसे कहां रखना है ताकि dl() फ़ंक्शन इसे मिलेगा।

उत्तर

3

mcrypt Sourceforge पेज यह http://mcrypt.sourceforge.net/
बस इसे संकलित करने के लिए होना चाहिए:

wget http://superb-east.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz 
tar -xzvf libmcrypt-2.5.8.tar.gz 
cd libmcrypt-2.5.8 
./configure 
make 
sudo make install 

संपादित करें: आप एक सीधा मार्ग के साथ इसे संदर्भ कर सकते हैं?
आपने क्या प्रयास किया है?

EDIT2: ऐसा लगता है कि आप केवल एक्सटेंशन निर्देशिका php.ini में सेट से moduals लोड कर सकते हैं और आप ini_set साथ extensions_dir ओवरराइड नहीं कर सकते तो आप या तो इसे स्थापित करने के लिए अपने मेजबान को समझाने के लिए होगा या अगर वे अनुमति देते हैं आपके पास करने के लिए अपने स्वयं के php.ini (कई लोग आमतौर पर [उपयोगकर्ता नाम] /php.ini में करते हैं) तो आप वहां एक्सटेंशन_डीआईआर सेट कर सकते हैं और उसके साथ modual लोड कर सकते हैं।

+3

आह अच्छी तरह से है कि sudo हिस्सा काम करने के लिए नहीं जा रहा है, के बाद से मैं एक साझा मेजबान पर कर रहा हूँ। – nickf

+0

अच्छी तरह से आपको इसे पहले बनाना होगा, मैं अब एक बनाउंगा और एक लिंक पोस्ट करूंगा। – UnkwnTech

+0

प्रस्ताव (!) के लिए धन्यवाद, लेकिन मैं इसे बनाने में सक्षम हूं (मेरा नवीनतम संपादन देखें) – nickf

2

वास्तव में सबसे अच्छा तरीका है कि अपने आईएसपी को मैक्रिप्ट समर्थन शामिल करने के लिए कहें। भले ही आप अपने स्वयं के PHP एक्सटेंशन को बंडल करें और इसे डीएल() से लोड करें, फिर भी कोई गारंटी नहीं है कि यह PHP अपग्रेड के बाद काम करने जा रहा है, क्योंकि PHP कभी-कभी बहुत संस्करण-संख्या पिक्य होता है।

0

dl() आपकी मदद नहीं करेगा, क्योंकि यह केवल कुछ पथों से पुस्तकालयों को लोड करता है, और वे पथ आमतौर पर सिस्टम प्रशासकों द्वारा सुरक्षा कारणों से केवल लिखने योग्य होते हैं।

मुझे बहुत संदेह है कि होस्टर की सहमति के बिना बाइनरी पुस्तकालयों का उपयोग करने का एक तरीका है।

0

5.2.5 से पहले संस्करणों में PHP ने आपको डीएल() फ़ंक्शन में पथ का उपयोग करने की अनुमति दी ताकि आप आसानी से साझा वातावरण में लाइब्रेरी लोड कर सकें।

यह 5.2.5 के साथ 'सुरक्षा' कारणों के लिए बदल गया है और जहाँ तक मैं वाकिफ हूँ अपने ही एकमात्र विकल्प extensions_dir के लिए मॉड्यूल जोड़ने के लिए अपने सिस्टम व्यवस्थापक से प्राप्त करने के लिए है।

This issue is described at bugs.PHP.net

संबंधित मुद्दे