लारवेल को Mcrypt PHP एक्सटेंशन की आवश्यकता है


429

मैं migrateफंक्शन को Laravel 4ऑन में इस्तेमाल करने की कोशिश कर रहा हूं OSX। हालाँकि, मुझे निम्न त्रुटि मिल रही है:

Laravel requires the Mcrypt PHP extension.

जहां तक ​​मैं समझता हूं, यह पहले से ही सक्षम है (नीचे दी गई छवि देखें)।

क्या गलत है, और मैं इसे कैसे ठीक कर सकता हूं?

यहां छवि विवरण दर्ज करें


क्या आप लारवेल 3 या 4 का उपयोग करते हैं?
जनवरी पी।

बस पोस्ट में जानकारी जोड़ी गई। इट्स लारावेल 4
पैट्रिक रीक

4
हो सकता है कि यह पोस्ट आपकी सहायता करेगी: stackoverflow.com/questions/14476181/…
Jan P.

क्या आप अंतर्निहित PHP का उपयोग कर रहे हैं, या आपने दूसरा संस्करण स्थापित किया है? यदि हां, तो आपने इसे कैसे स्थापित किया?
जेमी Schembri

2
मुझे यह आसान समाधान homebrew का उपयोग करके मिला: jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis

जवाबों:


288

वेब सक्षम एक्सटेंशन और कमांड लाइन सक्षम एक्सटेंशन अलग-अलग हो सकते हैं। php -mअपने टर्मिनल में चलाएँ और देखें कि mcryptक्या सूचीबद्ध है। यदि यह नहीं है तो जाँच करें कि कमांड लाइन आपकी php.iniफ़ाइल php --iniको आपके टर्मिनल से चलाकर कहाँ लोड कर रही है।

इस php.iniफ़ाइल में आप एक्सटेंशन को सक्षम कर सकते हैं।

OSX

मैंने OSX के साथ भेजे गए मूल निवासी PHP को इंगित करने के कारण OSX पर लोगों को समस्याओं के बारे में सुना है। इसके बजाय आपको अपने PHP में वास्तविक पथ को शामिल करने के लिए अपने bash प्रोफ़ाइल को अपडेट करना चाहिए। कुछ इस तरह से (मैं वास्तव में OSX का उपयोग नहीं करता हूं इसलिए यह 100% नहीं हो सकता है):

export PATH=/usr/local/php5/bin:$PATH

उबंटू

जब आप sudo apt-get install php5-mcryptइसे चलाते हैं तो उबंटू (14.04 से पहले) के पुराने संस्करणों में वास्तव में एक्सटेंशन इंस्टॉल नहीं होता है mods-available। आपको इसे सिमिलिंक करना होगा।

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

एक बार इंस्टॉल होने के बाद सभी उबंटू संस्करणों पर आपको मॉड को सक्षम करना होगा। आप ऐसा कर सकते हैं php5enmod

sudo php5enmod mcrypt
sudo service apache2 restart

टिप्पणियाँ


4
यह मेरे लिए Ubuntu पर काम किया, धन्यवाद! अजीब कैसे sudo apt-get install php5-mcryptवास्तव में पूरी तरह से विस्तार स्थापित नहीं करता है।
Aristides


1
जाहिरा तौर पर यह पहले से ही मोड में उपलब्ध mcrypt आईएनआई स्थापित किया था, मैं बस php5enmod कमांड के बारे में पता नहीं था। इसका उपयोग करना एक आकर्षण की तरह काम करता है। धन्यवाद!
imkingdavid

तो बस इस पर, जब मैंने php -m जाना सूचीबद्ध किया है, तो मैंने mcrypt किया है, जब मैं जाता हूं जो php कहता है / usr / local / bin / php। Ive काढ़ा के साथ mcrypt स्थापित करने की कोशिश की और लग रहा था कि काम किया है .. लेकिन Laravel अभी भी Mcrypt PHP विस्तार की आवश्यकता है कहते हैं।
Mar42 Rossouw

1
@Imkingdavid की तरह मुझे भी प्रतीकात्मक लिंक की आवश्यकता नहीं थी। php5enmod पर्याप्त था। उबंटू 14.04 एलटीएस
ब्रेट

340

क्या आपके पास MAMP स्थापित है?

which phpटर्मिनल में उपयोग करें कि आप PHP के किस संस्करण का उपयोग कर रहे हैं।

यदि यह MAMP से PHP संस्करण नहीं है, तो आपको .bash_profileउपयोगकर्ता की होम निर्देशिका में संपादित करना चाहिए या जोड़ना चाहिए :cd ~

में .bash_profile, निम्न पंक्ति जोड़ें:

export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH

संपादित: पहले आपको cd /Applications/MAMP/bin/phpMAMP से यह जानने के लिए कमांड का उपयोग करना चाहिए कि आप किस MAMP का उपयोग कर रहे हैं और फिर ऊपर दिए गए PHP संस्करण से प्रतिस्थापित करें।

फिर restartटर्मिनल यह देखने के लिए कि आप अब कौन सा PHP इस्तेमाल कर रहे हैं।

और यह अब काम करना चाहिए।


18
आपको Mcrypt प्राप्त करने के लिए MAMP की आवश्यकता नहीं है।
जैकलिन

48
बेशक आपको Mcrypt प्राप्त करने के लिए MAMP की आवश्यकता नहीं है। यह उत्तर केवल उन लोगों के लिए है जिनके पास अपने कंप्यूटर पर PHP के कई संस्करण स्थापित हैं, XAMPP या MAMP, या अन्य कहते हैं।
जस्टिनहो

इसी तरह, AMPPS उपयोगकर्ताओं के लिए: export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... यह मानते हुए कि आप 5.4.xx की शूटिंग कर रहे हैं, वहाँ भी 5.3 और 5.5 है।
जोएल मेलन

6
हर कोई MAMP का उपयोग नहीं करता है, आपके पास बाकी लोगों के लिए एक उत्तर है?
TuGordoBello

2
बस मैंने सोचा था कि cd ~बहुत महत्वपूर्ण है, आपको .bash_profileवहां मौजूद होना चाहिए , यह भी महत्वपूर्ण है कि क्या आप अपने टर्मिनल को बंद करें और फिर से खोलें ताकि नए बैश चर लोड हो जाएं। बस यह सुनिश्चित कर लें कि आपके बदलाव को सत्यापित करने के लिए कौन सी php लागू की गई है, खुश कोडिंग!
वायर्ड 00

142

उन लोगों के लिए जो XAMPP 1.7.3 और Mac का उपयोग करते हैं

  1. टर्मिनल पर जाएं
  2. दर्ज which php
    • अगर यह कहता है /usr/bin/php, तो 3 पर आगे बढ़ें।
  3. दर्ज करें sudo nano ~/.bash_profile(या sudo vim ~/.bash_profileयदि आप जानते हैं कि इसका उपयोग कैसे करना है)
  4. फिर इसे पेस्ट करें export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+Oफिर बचाने के लिए दर्ज करें, फिर Ctrl+Xबाहर निकलने के लिए।
  6. प्रकार cd ~
  7. प्रकार . .bash_profile
  8. टर्मिनल को पुनरारंभ करें।
  9. दर्ज करें which php। यदि आपने इसे सही किया, तो यह # 4 में पथ के समान होना चाहिए।

Mcrypt त्रुटि का कारण यह है कि आपका मैक अपने मूल php का उपयोग करता है, आपको इसे एक xampp में बदलने की आवश्यकता है।

PS मैं मैक उपयोगकर्ताओं के लिए Laravel 4 के लिए MAMP का उपयोग करने की सलाह दूंगा, यह समस्या बिना पसीने के php फ़ाइल जानकारी त्रुटि के साथ हल हो जाएगी, और xampp का php संस्करण बहुत पुराना है।


12
एक अच्छा जवाब भी! यह MAMP के लिए होना चाहिए:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
फॉक्सिननी

3
उन लोगों के लिए जिनके पास ~ / .bash_profile नहीं है, ~ / .bashrc
आयरनविंड

6
तुरंत .bash_profile चलाता है, आम तौर पर आपको चलाने के लिए उन बैश को फिर से शुरू करने की आवश्यकता होती है
ब्रायन पी

कुछ बुरा हुआ और अब मेरा टर्मिनल भी सूडो को नहीं पहचान पाएगा
सनी आर गुप्ता

यह लैम्‍प पर भी काम करता है, बस रास्‍ता export PATH="/opt/lampp/bin:$PATH"
बदलिए

87

OSX पर गैर MAMP या XAMPP उपयोगकर्ताओं के लिए (होमब्रे के साथ स्थापित):

brew install homebrew/php/php56-mcrypt

चीयर्स!


1
मुझे चिंता थी कि यह देशी OSX PHP के साथ काम नहीं करेगा, लेकिन मैंने अभी स्थापित किया है और मुझे अपने पैट या किसी भी चीज़ के साथ गड़बड़ नहीं करना है। बस काम करता है। अच्छा है।
लॉरेन

3
यह बहुत अच्छा होगा कि इस उत्तर को इस धागे पर अग्रणी उत्तरों से जोड़ा जाए, ताकि इसे अधिक व्यापक संसाधन बनाया जा सके। त्वरित सलाह के लिए धन्यवाद, जैसा कि लॉरेन ने उल्लेख किया है, यह वास्तव में समस्या को ठीक करता है।
ब्रायन रेनर

4
यह वास्तव में है $ brew install homebrew/php/php55-mcrypt, अन्यथा मिल गयाError: No available formula with the name "php55-mcrypt"
कॉनर लीच

47

उबुन्टु का उपयोग करना, बस

sudo php5enmod mcrypt

मेरे लिए चाल चली। आपको Apache को पुनरारंभ करने की आवश्यकता नहीं है क्योंकि आपको CLI से PHP का उपयोग करने की आवश्यकता है।


37

उबंटू में (PHP-FPM, Nginx)

sudo apt-get install php5-mcrypt

Php5-mcrypt इंस्टॉल करने के बाद

आपको मॉड-उपलब्ध में एक सिम्लिंक ini फ़ाइलों को बनाना होगा:

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

सक्षम:

sudo php5enmod mcrypt

php5-fpm को पुनः आरंभ करें:

sudo service php5-fpm restart

ज्यादा जानकारी


मैं भागा sudo aptitude -y install php5-mcrypt, उसके बाद sudo php5enmod mcryptऔर sudo service php5-fpm restart। (मैंने नरम लिंकिंग चरण को छोड़ दिया)। यह काम किया :)
आदित्य एमपी

26

लारावेल को अपाचे पर काम करना

PHP संस्करण: PHP 5.5.9

उबंटू संस्करण: 14.04

मेरे पास खिड़कियों पर काम करने वाली लार्वा परियोजना थी। जब मैंने इसे ubuntu सर्वर पर कॉपी किया, तो मुझे mcrypt त्रुटि मिलनी शुरू हो गई। परीक्षण और त्रुटि के बहुत घंटे के बाद यह

कारीगर कमांड काम कर रहा है

(यदि आप कारीगर कमांड लाइन टूल का उपयोग करते समय mcrypt त्रुटि कर रहे हैं)

मैंने बहुत बार ट्रायल और एरर किया, इसलिए हर बार जब भी मैं php5enmod कमांड चलाता हूं, तो मैं एरर मैसेज करता था। लेकिन ताजा इंस्टॉल पर कोई त्रुटि संदेश नहीं था। इस कदम के बाद मुझे कारीगर की कमान मिली

sudo rm /etc/php5/mods-available/mcrypt.ini
sudo apt-get purge php5-mcrypt
sudo apt-get install mcrypt
sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

ब्राउज़र त्रुटि को ठीक करना

(यदि आपको स्थानीय लार्वा इंडेक्स पेज तक पहुँचने में ब्राउज़र में mcrypt त्रुटि हो रही है)

sudo nano /etc/php5/apache2/php.ini

php ini के डायनामिक रूप से संकलित एक्सटेंशन अनुभाग के तहत निम्न पंक्ति जोड़ें

extension=mcrypt.so

एपाचे सर्वर को पुनरारंभ करें, लार्वा कैश और काम करने वाली सभी चीजों को शुद्ध करें


यदि आप php docker की इमेज पर काम कर रहे हैं , तो आपको रन करने की भी आवश्यकता है docker-php-ext-install mcrypt। छवि पर परीक्षण किया गया: php:5.6.31-apache। उसके बिना, php -mनहीं दिखा mcrypt
ईवा

19

Ubuntu 14.04 पर php-fpm स्थापनाओं के लिए, निम्नलिखित ने मेरे लिए काम किया:

sudo apt-get install php5-mcrypt

यह mcrypt.iniअंदर फ़ाइल बनाएगा/etc/php5/mods-available/

फिर

sudo php5enmod mcrypt

में एक सिमलिंक बनाएगा: /etc/php5/fpm/conf.d/

बस php-fpm सेवाओं को पुनः आरंभ करें sudo service php5-fpm restart


19

अन्य काम नहीं कर रहे हैं, तो ubuntu के लिए इन चरणों का प्रयास करें:

  1. cd ~
  2. sudo apt-get remove php5-mcrypt
  3. sudo apt-get install php5-mcrypt
  4. sudo php5enmod mcrypt
  5. sudo service apache2 restart

आशा है कि मदद मिलेगी। धन्यवाद !


19

या, उपयोग करें:

sudo apt-get install php5-mcrypt

सुनिश्चित नहीं है कि यह मानक PHP इंस्टॉल पर काम करेगा - मैंने php 5.5.7पैकेज का उपयोग करके स्थापित किया है:

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update

16

मेरे ओएस है Yosemite

मैं कॉन्फ़िगरेशन पथ को खोजकर इस समस्या को हल करता हूं:

php --ini

उदाहरण आउटपुट:

Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File:         /usr/local/etc/php/5.5/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed:      (none)

अगला कदम:

  1. Php55 ini फ़ाइल का नाम बदलें या हटाएं
  2. सिमिलिंक बनाएं
  3. Apache सर्वर को पुनरारंभ करें

आदेश:

mv /usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.5/php.ini.default
ln -s /etc/php.ini /usr/local/etc/php/5.5/php.ini
sudo apachectl restart

फिर आप अपने php मॉड्यूल को इसके माध्यम से जांच सकते हैं:

php -m

16

बस यमदूतों के लिए,

yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath

शायद आपको रेमी रेपो स्थापित करने की आवश्यकता है


15

इसने इसे मेरे लिनक्स मिंट लोकल एनवायरमेंट /ubuntu/350942/cannot-get-mcrypt-for-php5 पर हल किया।

मुझे निम्नलिखित फ़ोल्डर /etc/php5/apache2/conf.d/mcrypt.ini और /etc -php5/cli/conf.d में अपने /etc/php5/conf.d/mcrypt.ini फ़ाइल में एक सिमलिंक बनाने की आवश्यकता है। /mcrypt.ini


14

आपको एक वातावरण में सभी की आवश्यकता है। आप MAMP या XAMPP या किसी अन्य उपकरण का उपयोग कर सकते हैं। इन उपकरणों में से एक को स्थापित करने के बाद आपको अपने .bash_profile को संपादित करना (बनाना) होगा (मान लें कि आप बैश का उपयोग करते हैं)।

या यहां तक ​​कि सरल और अधिक पेशेवर आप लारवेल होमस्टेड का उपयोग कर सकते हैं।

यहाँ आधिकारिक दस्तावेज के लिए एक लिंक है: http://laravel.com/docs/5.0/homestead

इसके अलावा जेफरी के पास इसके बारे में एक मुफ्त ट्यूटोरियल है: https://laracasts.com/series/laravel-5-fundamentals/epodes/2

मैं आपको होमस्टेड के साथ जाने की सलाह देता हूं क्योंकि आप निम्नलिखित सभी टूल को इंस्टॉल करेंगे।

  • उबंटू 14.04
  • PHP 5.6
  • HHVM
  • nginx
  • माई एसक्यूएल
  • postgres
  • नोड (बोवर, ग्रंट और गल्प के साथ)
  • Redis
  • memcached
  • Beanstalkd
  • लारवेल दूत
  • फैब्रिक + हिपचैट एक्सटेंशन

10

@JetLaggy पर विस्तार:

MAMP निर्देशिका के साथ .bash_profile को फिर से संशोधित करने के लिए बार-बार प्रयास करने के बाद, मैंने MAMP php निर्देशिका के लिए फ़ाइल अनुमतियों को बदल दिया और उचित निर्देशिका दिखाने के लिए 'जो php' प्राप्त करने में सक्षम था। परेशानी यह थी कि अन्य फ़ंक्शन काम नहीं करते थे, जैसे कि 'php -v'।

इसलिए मैंने MAMP अपडेट किया। http://documentation.mamp.info/en/mamp/installation/updating-mamp

यह मेरे विशेष सेटअप के लिए चाल चली। मुझे PHP के अद्यतित संस्करण को प्रतिबिंबित करने के लिए अपने PATH को समायोजित करना पड़ा, लेकिन एक बार जब मैंने किया, तो सब कुछ काम कर गया!


9

ओएस एक्स पर

MAMP का उपयोग करना

which phpटर्मिनल में कमांड दर्ज करें यह देखने के लिए कि आप किस PHP का उपयोग कर रहे हैं। यदि यह MAMP से PHP संस्करण नहीं है, तो Bash द्वारा उपयोग किए जाने वाले $ PATH चर को अपडेट करना होगा।

सबसे पहले, आपको MMP से php वर्जन को चेक करने के लिए कमांड "cd / Applications / MAMP / bin / php" का उपयोग करना चाहिए और संस्करण का ध्यान रखना चाहिए (जैसे, php5.6.7)।

एक बार जब आप संस्करण को जान लेते हैं, तो आपको ~/.bash_profileफ़ाइल को संपादित करना चाहिए (जो कि, .bash_profileआपके होम डायरेक्टरी में है) और निर्यात लाइन जोड़ें:

    export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH

सुनिश्चित करें कि आप PHP के संस्करण के साथ php5.6.7 को बदलते हैं जिसे आपने MAMP में चुना है।

एक बार फाइल सेव हो जाने के बाद, सुनिश्चित करें कि आप अपना टर्मिनल बंद कर दें और उसे फिर से खोलें। एक बार ऐसा हो जाने के बाद, आप PHP के साथ MAMP वाले जहाज का उपयोग करेंगे।


एक तरीका आसानी से मिल सकता है कि वह रेखा क्या होनी चाहिए जो आपको .bash_profileअपने टर्मिनल के अंदर रखने की आवश्यकता है: अपने टर्मिनल के अंदर निम्नलिखित कमांड को चलाने के लिए:

    echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \
         | grep php | grep -i LoadModule | head -n1 \
         | sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH

उन तीन पंक्तियों को अपने टर्मिनल में कॉपी और पेस्ट करना सही ढंग से PHP संस्करण का उत्पादन करेगा जो MAMP नियंत्रण कक्ष के अंदर चुना गया है।

Homebrew / MacPorts का उपयोग करना

सुनिश्चित करें कि आपके कि pathहोता है /usr/local/bin/(Homebrew) या/opt/local/bin (MacPorts) यदि आप PHP है कि इन दो पैकेज प्रबंधकों में से किसी के साथ आता है का उपयोग कर रहे हैं।

MacPorts के साथ PHP पथ की जाँच करना

आप निम्न कमांड के साथ MacPorts का उपयोग करके PHP का सटीक स्थान पा सकते हैं:

port contents php70 | grep bin/php

ध्यान दें कि आपको उस php70PHP के संस्करण से बदलना चाहिए जिसे आपने स्थापित किया है।

Homebrew-php के साथ PHP पथ की जाँच करें

Homebrew-php ( https://github.com/Homebrew/homebrew-php ) एक टैप है जिसमें PHP के विभिन्न संस्करण हैं।

आप निम्न कमांड के साथ Homebrew का उपयोग करके PHP का सटीक स्थान पा सकते हैं:

brew --prefix homebrew/php/php56

ध्यान दें कि आपको उस php56PHP के संस्करण से बदलना चाहिए जिसे आपने स्थापित किया है।


6

उबंटू में 14.04

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

उबंटू 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt

उबुन्टु 18.04

sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt

या

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt

5

यदि आप Z Shell का उपयोग कर रहे हैं, तो बस निम्नलिखित करें:

  1. टर्मिनल खोलें
  2. sudo nano ~/.zshrc
  3. इसे चिपकाएँ; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. सहेजें
  5. Daud source ~/.zshrc
  6. रन which php - आपको MAMP 5.6.10 पथ मिलना चाहिए

5.6.10 आपके MAMP में सेट किए गए PHP का संस्करण है।


3

काढ़ा के साथ OSX

$ brew install mcrypt php70-mcrypt

मैं PHP 7.0.x चला रहा हूं, इसलिए "php70" को अपने संस्करण में बदलें, यदि आप एक अलग संस्करण का उपयोग कर रहे हैं।
जैसा कि अन्य उत्तरों में कहा गया है, आप अपने php संस्करण को देख सकते हैं $ php -v


3

उनके लिए जो आज भी यहां आते हैं:

लारवेल को mcryptअब विस्तार की आवश्यकता नहीं हैmcryptअप्रचलित है, libmcrypt का अंतिम अद्यतन 2007 में था। लारवेल 4.2 अप्रचलित है और इसका अधिक समर्थन नहीं है। सबसे अच्छा (= सुरक्षित) समाधान लारवेल> 5.1 को अद्यतन करना है (लारावेल 5.2 से पहले कोई एलटीएस नहीं है)।

मैकट्रिप को जून 2015 में लारवेल से हटा दिया गया था: https://github.com/laravel/framework/pull/9041


मैंने होमस्टेड प्रावधान चलाकर अपना मुद्दा तय किया

0

sudo php स्थापित mcrypt

सुडो php5enmod mcrypt


1
जबकि आपकी टिप्पणी तकनीकी रूप से सही हो सकती है, हम यहां StackOverflow पर आपके उत्तरों में कुछ स्पष्टीकरण शामिल करने का प्रयास करते हैं। इसके अलावा ऐसा लगता है कि ओपी पहले से ही स्थापित है mcrypt, क्या आप इस बात पर विस्तार कर सकते हैं कि आप क्यों ओपी की समस्या को ठीक करेंगे?
milo526

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.