ओएसएक्स माउंटेन शेर पर PHP के लिए मैक्रिप्ट एक्सटेंशन इंस्टॉल करना




macos apache (13)

mycrypt.o और mcrypt_filter.o आपके php डाउनलोड निर्देशिका के ext / .libs में हैं। बस फ़ाइलों को ext / mcrypt पर कॉपी करें, फिर चलाएं && इंस्टॉल करें।

संभावित एन 00 बी प्रश्नों के लिए अग्रिम में माफी, मैं अपने ओएसएक्स माउंटेन शेर मशीन पर PHP के लिए मैक्रिप्ट एक्सटेंशन स्थापित करने की कोशिश कर रहा हूं।

टर्मिनल में निम्नलिखित कदम मैंने अपने PHP इंस्टॉल को प्राप्त करने के लिए अब तक किया है

cd /path/to/downloaded/php-5.3.21/ext/mcrypt/
/usr/bin/phpize
./configure
cd /path/to/downloaded/php-5.3.21
./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs
make
sudo make install

जो अच्छी तरह से काम करता है और PHP 5.3.21 जुर्माना स्थापित करता है। मैंने तब किया है

sudo nano /private/etc/php.ini

और शामिल

extension=mcrypt.so

अपाचे के साथ पुनरारंभ करने के साथ, phpinfo () यह नहीं दिखाता है कि mcrypt एक्सटेंशन लोड हो गया है।

मैंने फिर php.ini के अंदर extension_dir निर्दिष्ट करने की कोशिश की, फिर से भाग्य के साथ।

मैंने कर लिया है

locate mcrypt.so
/opt/local/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so
/usr/local/Cellar/php53-mcrypt/5.3.18/mcrypt.so

और दोनों निर्देशिकाओं को extension_dir के रूप में कोई किस्मत के साथ करने की कोशिश की।

मैंने गुगलिंग के बाद निम्नलिखित भी कोशिश की है

./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs --with-mcrypt

जो ठीक काम करता प्रतीत होता है, लेकिन फिर "मेक" पर, यह लौटता है

ext/mcrypt/mcrypt.o: No such file or directory
ext/mcrypt/mcrypt_filter.o: No such file or directory

फिर, कोई सफलता नहीं।

मैं क्या गलत कर रहा हूं? ऐसा लगता है कि mcrypt.so का भौतिक संकलन नहीं हो रहा है, या गलत तरीके से संकलित हो रहा है क्योंकि मुझे लगता है कि वहां एक और मैक्रिप्ट होने का संदेह होगा।

कृपया कोई मदद करें? मैं बिना किसी किस्मत के Google खोजों के पृष्ठों पर पृष्ठों से गुजर चुका हूं!


sudo apt-php5-mcrypt स्थापित करें

ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/fpm/conf.d/mcrypt.ini

सेवा php5-fpm पुनरारंभ करें

सेवा nginx पुनरारंभ करें


ब्रू बेस समाधान मेरे लिए काम किया

  1. इन पैकेजों को स्थापित करें

    $ brew इंस्टॉल ब्रू स्थापित mcrypt php54-mcrypt स्थापित करें

  2. Php.ini पर डिफ़ॉल्ट php.ini.default कॉपी करें

    $ sudo cp /private/etc/php.ini.default /private/etc/php.ini

  3. इस लाइन को php.ini फ़ाइल एक्सटेंशन अनुभाग में जोड़ें - कृपया अपनी मशीन में इंस्टॉल स्थान के साथ एक्सटेंशन पथ सत्यापित करें

    विस्तार = "/ usr / स्थानीय / सेलर / php54-mcrypt / 5.3.26 / mcrypt.so"

  4. अपने अपाचे सर्वर को पुनरारंभ करें

    $ apache पुनरारंभ करें


ब्रू के साथ समाधान निम्नलिखित के बाद ही काम करता है: आपके php.ini में

nano /private/etc/php.ini

इस लाइन को जोड़ें:

extension="/usr/local/Cellar/php53-mcrypt/5.3.26/mcrypt.so"

चेतावनी! सही PHP संस्करण सेट करें।


मैं बस माउंटेन शेर पर इसके माध्यम से चला गया। होमब्रे ने libiconv पर अवरुद्ध किया जिसे यह सोचा गया था लेकिन वास्तव में अद्यतित था। Libiconv को पहचानने के लिए एक घंटे के बाद, मैंने इसे पुराना फैशन तरीका छोड़ दिया और स्थापित किया, जिसमें पांच मिनट लग गए ...

(download your php version)
$ wget http://www.php.net/get/php-5.3.21.tar.gz/from/a/mirror
$ tar -xvzf php-5.3.21.tar.gz
$ cd php-5.3.21/ext/mcrypt
$ phpize
$ ./configure
$ make
$ make test
$ sudo make install 

mcrypt.so अब आपके PHP ext dir ( /usr/lib/php/extensions/no-debug-non-zts-20090626/ मेरे मामले में) में है, अब आपको मॉड्यूल के रूप में php.ini में जोड़ना होगा

$ vi /etc/php.ini
$ (insert) extension=mcrypt.so
$ sudo apachectl restart

हो गया - कोई शराब आवश्यक नहीं है। एचटीएच कोई


यह जो मैंने किया है:

$ wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download
$ tar xzvf libmcrypt-2.5.8.tar.gz
$ ./configure
$ make
$ sudo make install

$ brew install autoconf

$ wget file:///Users/rmatikolai/Downloads/php-5.4.24.tar.bz2
$ tar xjvf php-5.4.24.tar.bz2
$ cd php-5.4.24/ext/mcrypt
$ phpize
$ ./configure # this is the step which fails without the above dependencies
$ make
$ make test
$ sudo make install


$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
$ sudo vi /private/etc/php.ini

इसके बाद, आपको लाइन जोड़ने की जरूरत है:

extension=mcrypt.so

$ sudo apachectl restart

उन लोगों के लिए एक और संभावना जो ओएस एक्स को यथासंभव स्वच्छ रखना चाहते हैं, एक पीएचपी विकास पर्यावरण को परिभाषित करने के लिए वानर [1] का उपयोग करना है। वेबसर्वर और PHP और सभी के साथ वर्चुअल मशीन चलाने के लिए Vagrant वर्चुअलबॉक्स [2] में हेडलेस मोड (~ 13%, मेरे 200-इंच, मध्य 200 मैकबुक प्रो पर CPU का 3%) का उपयोग कर सकते हैं।

आसानी से योनि पर्यावरण बनाने के लिए आप इस महान उपकरण का उपयोग कर सकते हैं https://puphpet.com/

  1. http://www.vagrantup.com/
  2. https://www.virtualbox.org/

मैं मैक पर होमब्रू का उपयोग करता हूं। यह आपके लिए सभी सामान स्थापित और कॉन्फ़िगर करेगा।
http://mxcl.github.com/homebrew/

फिर आप इसे brew install mcrypt php53-mcrypt साथ स्थापित करने में सक्षम होना चाहिए और यह बस काम करेगा (टीएम)।

आप PHP का जो भी संस्करण उपयोग कर रहे हैं, उसके साथ 53 को प्रतिस्थापित कर सकते हैं, जैसे php56-mcrypt या php70-mcrypt । यदि आप सुनिश्चित नहीं हैं, तो brew search php उपयोग brew search php

यह भी याद रखें कि यदि आप निर्मित मैक PHP का उपयोग कर रहे हैं तो यह /usr/bin में स्थापित है, आप देख सकते हैं कि आप किस PHP का उपयोग कर रहे हैं which php साथ टर्मिनल पर which php और यह पथ वापस कर देगा।


मेरे लिए, योसामेट पर

$ brew install mcrypt php56-mcrypt

कंप्यूटर को पुनः शुरू करें

चाल है


कुछ भी काम नहीं किया और अंततः संसाधन @ Here और Here संसाधन का उपयोग करके काम कर रहा है; बस ओएसएक्स मैवरिक्स (10.9) के लिए याद रखें PHP 5.4.17 या स्थिर PHP 5.4.22 स्रोत का उपयोग mcrypt संकलित करने के लिए करना चाहिए। यहां पीएच स्रोत 5.4.22


मैं होमब्री के बिना PHP 5.3 के लिए mcrypt मॉड्यूल स्थापित करने के लिए एक खोल स्क्रिप्ट तैयार करूंगा।

यदि आवश्यक हो तो स्क्रिप्ट्स php autoconf इंस्टॉल करें और अपने PHP संस्करण के लिए मॉड्यूल संकलित करें।

लिंक यहां है: https://gist.github.com/lucasgameiro/8730619

धन्यवाद


port या brew के उपयोग के बिना mcrypt इंस्टॉल करना

नोट: ये निर्देश लंबे हैं क्योंकि वे पूरी तरह से इरादा रखते हैं। प्रक्रिया वास्तव में काफी सीधे आगे है। यदि आप आशावादी हैं, तो आप mcrypt एक्सटेंशन सेक्शन के निर्माण पर जा सकते हैं, लेकिन आप मेरी त्रुटियों को बहुत अच्छी तरह से देख सकते हैं, मुझे पहले autoconf और libmcrypt इंस्टॉल करने के लिए कह रहे हैं।

मैं बस ओएसएक्स 10.9 के एक नए इंस्टॉलेशन पर इसके माध्यम से चला गया है। मेरे लिए काम किया गया समाधान सीकेएम के बहुत करीब था - मैं पूर्णता के लिए अपने कदमों के साथ-साथ पूरी तरह से अपने स्वयं के साथ भी शामिल हूं। मेरा मुख्य लक्ष्य (" mcrypt होने" के अलावा) स्थापना को ऐसे तरीके से करना था जिसने पूरी तरह से सिस्टम पर कम से कम प्रभाव डाला। इसका मतलब है चीजों को मैन्युअल रूप से करना (कोई port नहीं, कोई brew नहीं)

चीजों को मैन्युअल रूप से करने के लिए, आपको पहले कुछ निर्भरताओं की आवश्यकता होगी: एक PHP मॉड्यूल बनाने के लिए, और दूसरा विशेष रूप से mcrypt लिए। ये autoconf और libmcrypt , जिनमें से आप पहले से ही हो सकते हैं, लेकिन इनमें से कोई भी आपके पास ओएसएक्स 10.9 के नए libmcrypt पर नहीं होगा।

autoconf

Autoconf (बेहतर वर्णन की कमी के लिए) का उपयोग काफी अलग नहीं है, लेकिन अभी भी बहुत अलग है, सिस्टम कैसे संकलित करने के लिए सिस्टम। यह आपको ओएसएक्स पर मॉड्यूल के रूप में लिनक्स पर मॉड्यूल बनाने के लिए मूलभूत आदेशों का एक ही सेट उपयोग करने की अनुमति देता है, उदाहरण के लिए, उनके अलग-अलग फ़ाइल-सिस्टम पदानुक्रमों के बावजूद, मैंने स्टैक ओवरव्लो पर एरेस द्वारा वर्णित विधि का उपयोग किया, जिसे मैं यहां पुन: पेश करूंगा संपूर्णता के लिए। यह बहुत सीधी है:

$ mkdir -p ~/mcrypt/dependencies/autoconf
$ cd ~/mcrypt/dependencies/autoconf
$ curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz
$ tar xzf autoconf-latest.tar.gz
$ cd autoconf-*/
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

अगला, चलकर इंस्टॉलेशन को सत्यापित करें:

$ which autoconf

जो वापस /usr/local/bin/autoconf वापस करना चाहिए

libmcrypt

इसके बाद, आपको libmcrypt आवश्यकता libmcrypt , जिसका उपयोग mcrypt एक्सटेंशन की libmcrypt प्रदान करने के लिए किया जाता है (एक्सटेंशन स्वयं इस लाइब्रेरी में एक PHP इंटरफ़ेस का प्रावधान है)। जिस विधि का मैंने उपयोग किया था वह here वर्णित एक पर आधारित था, लेकिन मैंने चीजों को सरल बनाने का प्रयास किया है जितना मैं कर सकता हूं:

सबसे पहले, libmcrypt स्रोत डाउनलोड करें, SourceForge से उपलब्ध SourceForge , और इस लेखन के समय के रूप में उपलब्ध है, विशेष रूप से, यहां:

http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download

वास्तविक डाउनलोड लिंक पर जाने के लिए आपको मानक सोर्सफोर्ज हुप्स के माध्यम से कूदना होगा, लेकिन एक बार जब आप इसे प्राप्त कर लेंगे, तो आप इसे इस तरह से कुछ में पास कर सकते हैं:

$ mkdir -p ~/mcrypt/dependencies/libmcrypt
$ cd ~/mcrypt/dependencies/libmcrypt
$ curl -L -o libmcrypt.tar.bz2 '<SourceForge direct link URL>'
$ tar xjf libmcrypt.tar.bz2
$ cd libmcrypt-*/
$ ./configure
$ make
$ sudo make install

यह सत्यापित करने का एकमात्र तरीका है कि यह सत्यापित किया गया है कि यह काम किया है mcrypt एक्सटेंशन के लिए ./configure चरण के माध्यम से (नीचे)

mcrypt एक्सटेंशन का निर्माण

यह हमारा वास्तविक लक्ष्य है। उम्मीद है कि निर्भरता नरक में संक्षिप्त कार्यकाल खत्म हो गया है।

सबसे पहले, हमें mcrypt एक्सटेंशन के लिए स्रोत कोड प्राप्त करने की आवश्यकता होगी। यह PHP के सभी के लिए स्रोत कोड के भीतर सबसे आसानी से उपलब्ध दफन है। तो: निर्धारित करें कि आपको PHP स्रोत कोड का कौन सा संस्करण चाहिए।

$ php --version # to get your PHP version

अब, यदि आप भाग्यशाली हैं, तो आपका वर्तमान संस्करण मुख्य दर्पण से डाउनलोड के लिए उपलब्ध होगा। यदि ऐसा है, तो आप कुछ टाइप कर सकते हैं:

$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -L -o php-5.4.17.tar.bz2 http://www.php.net/get/php-5.4.17.tar.bz2/from/a/mirror

दुर्भाग्यवश, मेरा वर्तमान संस्करण (5.4.17, इस मामले में) उपलब्ध नहीं था, इसलिए मुझे वैकल्पिक / ऐतिहासिक लिंक http://downloads.php.net/stas/ (एक आधिकारिक PHP डाउनलोड साइट) पर भी उपयोग करने की आवश्यकता थी। इनके लिए, आप कुछ इस तरह उपयोग कर सकते हैं:

$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -LO http://downloads.php.net/stas/php-5.4.17.tar.bz2

फिर, आपके वर्तमान संस्करण के आधार पर।

एक बार आपके पास यह हो जाने के बाद, (और उपरोक्त सभी निर्भरताओं), आप वास्तव में मॉड्यूल के निर्माण / स्थापित करने की मुख्य प्रक्रिया में जा सकते हैं।

$ cd ~/mcrypt/php
$ tar xjf php-*.tar.bz2
$ cd php-*/ext/mcrypt
$ phpize
$ ./configure # this is the step which fails without the above dependencies
$ make
$ make test
$ sudo make install

सिद्धांत रूप में, mcrypt.so अब आपकी PHP विस्तार निर्देशिका में है। इसके बाद, हमें इसके बारे में PHP बताना होगा।

mcrypt एक्सटेंशन को विन्यस्त करना

आपकी php.ini फ़ाइल को mcrypt लोड करने के लिए कहा जाना चाहिए। ओएसएक्स 10.9 में डिफ़ॉल्ट रूप से, यह वास्तव में mcrypt विशिष्ट कॉन्फ़िगरेशन जानकारी है, लेकिन यह वास्तव में mcrypt सक्रिय नहीं करता है जबतक कि आप इसे नहीं बताते।

php.ini फ़ाइल डिफ़ॉल्ट रूप से मौजूद नहीं है। इसके बजाए, फ़ाइल /private/etc/php.ini.default डिफ़ॉल्ट कॉन्फ़िगरेशन सूचीबद्ध करती है, और "true" php.ini बनाने के लिए एक अच्छा टेम्पलेट के रूप में उपयोग की जा सकती है, यदि यह पहले से मौजूद नहीं है।

यह निर्धारित करने के लिए कि php.ini पहले से मौजूद है या नहीं, चलाएं:

$ ls /private/etc/php.ini

यदि कोई परिणाम है, तो यह पहले से मौजूद है, और आपको अगला आदेश छोड़ना चाहिए।

php.ini फ़ाइल बनाने के लिए, चलाएं:

$ sudo cp /private/etc/php.ini.default /private/etc/php.ini

इसके बाद, आपको लाइन जोड़ने की जरूरत है:

extension=mcrypt.so

फ़ाइल में कहीं। मैं फ़ाइल को खोजने की सिफारिश करता हूं ;extension= , और पहली घटना से पहले इसे जोड़ना।

एक बार यह हो जाने के बाद, स्थापना और कॉन्फ़िगरेशन पूर्ण हो गया है। आप यह सत्यापित कर सकते हैं कि यह चलकर काम करता है:

php -m | grep mcrypt

जो " mcrypt " आउटपुट करना चाहिए, और कुछ और नहीं।

यदि आपका PHP का उपयोग अपाचे के httpd पर निर्भर करता है, तो आपको वेब पर हुए बदलावों को नोटिस करने से पहले इसे पुनरारंभ करना होगा। आप इसके माध्यम से ऐसा कर सकते हैं:

$ sudo apachectl restart

और आपने कल लिया।


आपको यह त्रुटि क्यों मिल रही है

PHP शिकायत करता है कि mcrypt.so जैसी फ़ाइलों में से एक को वाक्यविन्यास extension="mcrypt.so" का उपयोग करके शामिल किया गया है लेकिन फ़ाइल extension_dir पथ में नहीं है (इसका उपयोग करने के लिए <?php phpinfo(); ?> या php -i का उपयोग करें )।

यह आपको यह भी बताएगा कि कौन सी php.ini कॉन्फ़िगरेशन फ़ाइल लोड हो रही है ताकि आप जान सकें कि सेटिंग्स कहां से आ रही हैं। यदि आप होमब्रू संस्करण का उपयोग कर रहे हैं तो संभवतः यह /usr/local/etc/php/5.4/php.ini जैसा होगा।

इसके तहत उस हिस्से के बारे में ध्यान दें जो कुछ कहता है "इस डीआईआर को अतिरिक्त .ini फाइलों के लिए स्कैन करें" क्योंकि इसका मतलब यह है कि यह आपको अपनी फाइल डालने का स्थान देता है, जैसे tweaks.ini जो मुख्य कॉन्फ़िगरेशन फ़ाइल के बाद लोड होता है कि आप परिवर्तन कर सकते हैं और आसानी से उनके साथ रह सकते हैं। यह भी याद रखें कि इस निर्देशिका में सभी फाइलें वर्णानुक्रम में लोड हो जाती हैं, इसलिए यदि आपके पास adjustments.ini नामक एक है जिसे mcrypt.ini निर्देश शामिल हैं, और एक mcrypt.ini , तो संभवतः आपकी सेटिंग्स ओवरराइड हो जाएंगी।

extension="mcrypt.so" निर्दिष्ट करने का एक विकल्प mcrypt.so फ़ाइल को पूरा पथ निर्दिष्ट करना है। दूसरा विकल्प extension_dir सेटिंग को संपादित करना है।

मेरे लिए क्या काम किया

मैवेरिक्स पर मुझे या तो नहीं करना था। मैंने होमब्री का एक नया इंस्टॉल किया और फिर josegonzalez टैप का उपयोग करके जोड़ा:

brew tap josegonzalez/homebrew-php

(मेरा दूसरा लैपटॉप माउंटेन शेर चला रहा था और इस सेटअप में होमब्री का भी उपयोग कर रहा था।)

उस भयानक रेपो को टैप करने के बाद आप php और mcrypt इंस्टॉल कर सकते हैं जैसे कुछ:

brew install php54 php54-mcrypt

क्या होगा यदि यह काम नहीं करता है (और मुझे होमब्री का उपयोग क्यों करना चाहिए?)

मैं इसे स्रोत से डाउनलोड करने और बनाने से पहले इस मार्ग को आजमाने की सलाह दूंगा। स्रोत से निर्माण करना मुश्किल नहीं है - लेकिन मैं इसे बनाए रखना नहीं चाहता हूं। यह पहली जगह homebrew का उपयोग करने के कारणों में से एक है - यह एक पैकेज प्रबंधक (एक विशाल समुदाय के साथ) है।

homebrew प्रोजेक्ट पर बहुत सारे विकास हैं और - यदि आपको समस्याएं हैं तो मैं उनके मुद्दों के पृष्ठ की जांच करने का सुझाव दूंगा

तो हाँ, आप इसे स्रोत से बना सकते हैं और यह अभी एक अच्छा विकल्प प्रतीत हो सकता है यदि आप बस काम करने के लिए मैक्रिप्ट चाहते हैं लेकिन आप इसे बाद में करने के लिए खुद से नफरत कर सकते हैं ...

यदि आप php54 का उपयोग नहीं करना चाहते हैं तो php53 शाखा भी है। उनके पास रेपो में कुछ निर्देश हैं कि उनमें से दोनों का उपयोग कैसे करें / उनके बीच स्विच करें।

यदि आप brew search php54 लिए नए हैं तो आपको पता होना चाहिए कि आप brew search php54 का उपयोग करके और क्या उपलब्ध है, जो कुछ ऐसा देता है:

php54                php54-lzf          php54-snappy        
php54-amqp           php54-mailparse    php54-solr          
php54-apc            php54-mcrypt       php54-ssh2          
php54-apcu           php54-memcache     php54-stats         
php54-boxwood        php54-memcached    php54-svm           
php54-chdb           php54-midgard2     php54-tidy          
php54-couchbase      php54-mongo        php54-timezonedb    
php54-dbase          php54-msgpack      php54-tokyotyrant   
php54-ev             php54-mysqlnd_ms   php54-twig          
php54-gearman        php54-oauth        php54-uploadprogress
php54-geoip          php54-opcache      php54-uuid          
php54-gmagick        php54-parsekit     php54-varnish       
php54-graphdat       php54-pcntl        php54-wbxml         
php54-http           php54-pdflib       php54-xcache        
php54-igbinary       php54-phalcon      php54-xdebug        
php54-imagick        php54-proctitle    php54-xhgui         
php54-inclued        php54-pspell       php54-xhp           
php54-intl           php54-pthreads     php54-xhprof        
php54-ioncubeloader  php54-raphf        php54-xmldiff       
php54-jsmin          php54-redis        php54-yac           
php54-judy           php54-riak         php54-yaf           
php54-leveldb        php54-runkit       php54-yaml          
php54-libevent       php54-scrypt       php54-yaz           
php54-libvirt

TLDR

  • यदि संभव हो तो आपको mcrypt इंस्टॉल करने के लिए mcrypt उपयोग करना चाहिए
  • अगर आपको त्रुटियां मिल रही हैं तो शायद यह है क्योंकि आपकी कॉन्फ़िगरेशन फ़ाइल गड़बड़ हो गई है। extension_dir पथ की जांच करें और पता लगाएं कि mcrypt.so फ़ाइल कहां है और देखें कि कोई विसंगति है या (पूर्ण पथ निर्दिष्ट करें)




mcrypt