Laravel richiede l'estensione Mcrypt PHP


429

Sto cercando di utilizzare la migratefunzione in Laravel 4on OSX. Tuttavia, visualizzo il seguente errore:

Laravel requires the Mcrypt PHP extension.

Per quanto ho capito, è già abilitato (vedi l'immagine sotto).

Cosa c'è di sbagliato e come posso ripararlo?

inserisci qui la descrizione dell'immagine


Usi Laravel 3 o 4?
Jan P.

Ho appena aggiunto le informazioni al post. È Laravel 4
Patrick Reck

4
Forse questo post ti aiuterà: stackoverflow.com/questions/14476181/…
Jan P.

Stai utilizzando PHP integrato o hai installato un'altra versione? In tal caso, come lo hai installato?
Jamie Schembri,

2
Ho trovato questa soluzione semplice usando homebrew: jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis

Risposte:


289

Le estensioni abilitate per il Web e le estensioni abilitate per la riga di comando possono differire. Esegui php -mnel tuo terminale e controlla se mcryptè elencato. In caso contrario, controlla da dove viene caricata la riga di comando php.inieseguendo php --inidal tuo terminale.

In questo php.inifile è possibile abilitare l'estensione.

OSX

Ho sentito di persone su OSX che si imbattono in problemi dovuti al terminale che punta al PHP nativo fornito con OSX. Dovresti invece aggiornare il tuo profilo bash per includere il percorso effettivo del tuo PHP. Qualcosa del genere (in realtà non uso OSX, quindi potrebbe non essere del 100%):

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

Ubuntu

Nelle versioni precedenti di Ubuntu (precedenti alla 14.04) quando si esegue sudo apt-get install php5-mcrypt, in realtà non installa l'estensione in mods-available. Dovrai collegarlo simbolicamente.

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

Su tutte le versioni di Ubuntu dovrai abilitare la mod una volta installata. Puoi farlo con php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart

APPUNTI


4
questo ha funzionato per me su Ubuntu, grazie! Strano come sudo apt-get install php5-mcryptnon installare l'estensione completamente.
Aristides,

Ubuntu 13.10 - Ho anche dovuto installare mcrypt stesso
Ondrej Galbavý

1
Apparentemente aveva già installato mcrypt ini in mods available, non ero a conoscenza del comando php5enmod. Usarlo fa funzionare come un fascino. Grazie!
imkingdavid

Quindi proprio su questo, ho elencato mcrypt quando vado php -m, quando vado quale php dice / usr / local / bin / php. Ho provato a installare mcrypt con brew e sembrava aver funzionato .. Ma Laravel dice ancora che è richiesta l'estensione di Mcrypt PHP.
Marais Rossouw,

1
Come @imkingdavid, anche io non avevo bisogno del link simbolico. php5enmod era sufficiente. Ubuntu 14.04 LTS
Brett

340

Hai MAMP installato?

Usa which phpnel terminale per vedere quale versione di PHP stai usando.

Se non è la versione di PHP da MAMP, dovresti modificare o aggiungere .bash_profilenella home directory dell'utente, ovvero:cd ~

In .bash_profile, aggiungi la seguente riga:

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

Modificato: per prima cosa dovresti usare il comando cd /Applications/MAMP/bin/phpper verificare quale versione di PHP da MAMP stai usando e poi sostituire con la versione di PHP sopra.

Quindi restartil terminale per vedere quale PHP stai usando ora.

E dovrebbe funzionare ora.


18
Non è necessario MAMP per ottenere Mcrypt.
jackyalcine,

48
ovviamente non hai bisogno di MAMP per ottenere Mcrypt. questa risposta è solo per le persone che hanno più versioni di PHP installate sul proprio computer, ad esempio XAMPP o MAMP, o altri.
JustinHo,

Allo stesso modo, per gli utenti AMPPS: export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... supponendo che tu stia sparando per 5.4.xx, ci sono anche 5.3 e 5.5.
Joel Mellon,

6
Tutti non usano MAMP, hai una risposta per il resto delle persone?
TuGordoBello,

2
Ho solo pensato di sottolineare che cd ~è molto importante, devi aprire quello .bash_profileche esiste lì, ANCHE importante è che devi chiudere il tuo terminale e riaprire in modo che vengano caricate le nuove variabili bash. Assicurati di eseguire quale php per verificare che la modifica sia stata applicata, buona codifica!
cablato il

142

A quelli che usano XAMPP 1.7.3 e Mac

  1. Vai al terminale
  2. accedere which php
    • Se dice /usr/bin/php, quindi procedere con 3.
  3. Inserisci sudo nano ~/.bash_profile(o sudo vim ~/.bash_profilese sai come usarlo)
  4. Quindi incollalo export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+Oquindi entra per salvare, quindi Ctrl+Xper uscire.
  6. genere cd ~
  7. genere . .bash_profile
  8. riavvia il terminale.
  9. Enter which php. Se hai fatto bene, dovrebbe essere lo stesso del percorso in # 4.

Il motivo dell'errore mcrypt è perché il tuo Mac usa il suo php nativo, devi cambiarlo con quello che ha xampp.

PS Ti consiglierei di usare MAMP per gli utenti di Laravel 4 per Mac, questo problema verrà risolto insieme all'errore di informazioni sul file php senza sudore e la versione php di xampp è così obsoleta.


12
Anche una buona risposta! Dovrebbe essere questo per MAMP:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni il

3
per coloro che non hanno ~ / .bash_profile, prova a controllare ~ / .bashrc
Ironwind

6
esegue immediatamente il .bash_profile, normalmente è necessario riavviare per far funzionare quelle bash
Bryan P

È successo qualcosa di brutto e ora il mio terminale non avrebbe nemmeno riconosciuto sudo
Sunny R Gupta il

Funziona anche su Lampp, basta cambiare il percorso inexport PATH="/opt/lampp/bin:$PATH"
JTC

87

Per utenti non MAMP o XAMPP su OSX (con homebrew installato):

brew install homebrew/php/php56-mcrypt

Saluti!


1
Ero preoccupato che non funzionasse con OSX PHP nativo, ma l'ho appena installato e non ho dovuto fare confusione con il mio PERCORSO o altro. Funziona e basta. Ben fatto.
Lauren,

3
Sarebbe bello avere questa risposta allegata alle risposte principali su questo thread, per renderlo una risorsa più completa. Grazie per il rapido consiglio, come ha detto Lauren, questo risolve davvero il problema.
Bryan Rayner,

4
Questo è in realtà $ brew install homebrew/php/php55-mcrypt, altrimenti ottenutoError: No available formula with the name "php55-mcrypt"
Connor Leech il

47

Usando Ubuntu, giusto

sudo php5enmod mcrypt

ha fatto il trucco per me. Non è necessario riavviare Apache poiché è necessario utilizzare PHP solo dalla CLI.


37

In Ubuntu (PHP-FPM, Nginx)

sudo apt-get install php5-mcrypt

Dopo aver installato php5-mcrypt

devi creare un link simbolico ai file ini in mod-available:

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

abilitare:

sudo php5enmod mcrypt

riavvia php5-fpm:

sudo service php5-fpm restart

Più dettaglio


Corsi sudo aptitude -y install php5-mcrypt, seguito da sudo php5enmod mcrypte sudo service php5-fpm restart. (Ho saltato il passaggio del soft linking). Ha funzionato :)
Aditya MP

26

Far funzionare Laravel su Apache

Versione PHP: PHP 5.5.9

Versione di Ubuntu: 14.04

ho avuto un progetto laravel funzionante su Windows. quando l'ho copiato sul server Ubuntu, ho iniziato a ricevere l'errore mcrypt. questo dopo molte ore di tentativi ed errori

far funzionare il comando artigianale

(se si verifica un errore mcrypt durante l'utilizzo dello strumento da riga di comando artigianale)

ho fatto molte prove ed errori, quindi ogni volta che eseguo il comando php5enmod, ho ricevuto messaggi di errore. ma su una nuova installazione non c'erano messaggi di errore. dopo questo passaggio ho fatto funzionare il comando artigianale

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

correzione dell'errore del browser

(se si verifica un errore mcrypt nel browser quando si accede alla pagina dell'indice laravel locale)

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

aggiungi la seguente riga sotto la sezione delle estensioni compilata dinamicamente di php ini

extension=mcrypt.so

riavvia il server apache, elimina la cache laravel e tutto funziona


Se stai lavorando sull'immagine docker php , devi anche eseguire docker-php-ext-install mcrypt. Testato su immagine: php:5.6.31-apache. Senza quello, php -mnon mostra mcrypt.
Ewa,

19

Per le installazioni php-fpm su Ubuntu 14.04, per me ha funzionato:

sudo apt-get install php5-mcrypt

Questo creerà il mcrypt.inifile all'interno/etc/php5/mods-available/

Poi

sudo php5enmod mcrypt

creerà un collegamento simbolico in: /etc/php5/fpm/conf.d/

Basta riavviare i servizi php-fpm sudo service php5-fpm restart


19

Per Ubuntu provare questi passaggi se altri non funzionano:

  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

Spero che possa aiutare. Grazie !


19

Oppure usa:

sudo apt-get install php5-mcrypt

non sono sicuro che funzionerà su installazioni PHP standard - Ho installato php 5.5.7usando il pacchetto da:

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

16

Il mio sistema operativo è Yosemite.

Risolvo questo problema, trovando i percorsi di configurazione:

php --ini

Esempio di output:

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)

Prossimi passi:

  1. Rinomina o elimina il file ini php55
  2. Crea link simbolico
  3. Riavvia il server Apache

comandi:

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

Quindi puoi controllare i tuoi moduli php tramite:

php -m

16

Solo per yumers,

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

Forse hai bisogno di installare remi repo


15

Questo mi ha risolto sul mio ambiente locale Linux Mint /ubuntu/350942/cannot-get-mcrypt-for-php5

Avevo bisogno di creare un collegamento simbolico al mio file /etc/php5/conf.d/mcrypt.ini nelle seguenti cartelle /etc/php5/apache2/conf.d/mcrypt.ini e /etc/php5/cli/conf.d /mcrypt.ini


14

Hai bisogno di un ambiente tutto in uno. È possibile utilizzare MAMP o XAMPP o qualsiasi altro strumento. Dopo aver installato uno di questi strumenti, dovrai modificare (creare) il tuo .bash_profile (Supponendo che tu usi bash).

O anche semplice e più professionale puoi usare Laravel Homestead.

Ecco un link alla documentazione ufficiale: http://laravel.com/docs/5.0/homestead

Anche Jeffrey ha un tutorial gratuito a riguardo: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

Ti consiglio di andare con la fattoria perché preinstallerai tutti i seguenti strumenti.

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • nginx
  • MySQL
  • Postgres
  • Nodo (con Bower, Grunt e Gulp)
  • Redis
  • memcached
  • Beanstalkd
  • Laravel Envoy
  • Estensione Fabric + HipChat

10

Espandendo su @JetLaggy:

Dopo aver provato più e più volte a modificare .bash_profile con la directory MAMP, ho cambiato i permessi dei file per la directory php MAMP e sono stato in grado di ottenere "quale php" per mostrare la directory corretta. Il problema era che altre funzioni non funzionavano, come 'php -v'.

Quindi ho aggiornato MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp

Questo ha fatto il trucco per la mia configurazione particolare. Ho dovuto modificare il mio PERCORSO per riflettere la versione aggiornata di PHP, ma una volta fatto, tutto ha funzionato!


9

Su OS X

Utilizzando MAMP

Immettere il comando which phpnel terminale per vedere quale versione di PHP si sta utilizzando. Se non è la versione PHP di MAMP, la variabile $ PATH utilizzata da Bash dovrà essere aggiornata.

Per prima cosa, dovresti usare il comando "cd / Applications / MAMP / bin / php" per verificare quale versione di php da MAMP e prendere nota della versione (ad esempio, php5.6.7).

Una volta che conosci la versione, dovresti modificare il ~/.bash_profilefile (cioè .bash_profilequello nella tua home directory) e aggiungere una linea di esportazione:

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

Assicurati di sostituire php5.6.7 con la versione di PHP che hai selezionato in MAMP.

Una volta che il file è stato salvato, assicurati di chiudere il Terminale e aprirlo di nuovo. Una volta fatto ciò, utilizzerai il PHP fornito con MAMP.


Un modo per trovare facilmente quale dovrebbe essere la linea che devi inserire nel tuo .bash_profileè quello di eseguire il seguente comando all'interno del tuo terminale:

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

Copiare e incollare queste tre linee nel terminale produrrà correttamente la versione PHP che è stata selezionata all'interno del pannello di controllo di MAMP.

Utilizzo di Homebrew / MacPorts

Assicurati che pathcontiene /usr/local/bin/(Homebrew) o/opt/local/bin (MacPorts) se stai utilizzando PHP fornito con uno di questi due gestori di pacchetti.

Verifica del percorso PHP con MacPorts

Puoi trovare la posizione esatta di PHP usando MacPorts con il seguente comando:

port contents php70 | grep bin/php

Nota che dovresti sostituire php70con la versione di PHP che hai installato.

Controlla il percorso PHP con Homebrew-php

Homebrew-php ( https://github.com/Homebrew/homebrew-php ) è un rubinetto che ha diverse versioni di PHP.

Puoi trovare la posizione esatta di PHP usando Homebrew con il seguente comando:

brew --prefix homebrew/php/php56

Nota che dovresti sostituire php56con la versione di PHP che hai installato.


6

in Ubuntu 14.04

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

Ubuntu 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt

Ubuntu 18.04

sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt

o

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt

5

Se stai utilizzando Z Shell, procedi come segue:

  1. Terminale aperto
  2. sudo nano ~/.zshrc
  3. Incolla questo; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. Salva
  5. Correre source ~/.zshrc
  6. Esegui which php : dovresti ottenere il percorso MAMP 5.6.10

5.6.10 è la versione di PHP impostata nel tuo MAMP.


3

OSX con infusione

$ brew install mcrypt php70-mcrypt

Sto eseguendo PHP 7.0.x, quindi cambia "php70" con la tua versione, se stai usando una versione diversa.
Come indicato in altre risposte, puoi vedere la tua versione di php con $ php -v.


3

Per chi viene ancora qui oggi:

Laravel non ha più bisogno di mcryptestensione . mcryptè obsoleto, l'ultimo aggiornamento a libmcrypt è stato nel 2007. Anche Laravel 4.2 è obsoleto e non ha più supporto. La migliore (= sicura) soluzione è aggiornare a Laravel> 5.1 (non c'è LTS prima di Laravel 5.2).

Mcrypt è stato rimosso da Laravel nel giugno 2015: https://github.com/laravel/framework/pull/9041


Ho risolto il mio problema eseguendo la disposizione della fattoria

0

sudo php installa mcrypt

sudo php5enmod mcrypt


1
Mentre il tuo commento potrebbe essere tecnicamente vero, ci sforziamo di includere alcune spiegazioni alle tue risposte qui su StackOverflow. Inoltre sembra che OP sia già installato mcrypt, potresti espandere il motivo per cui ritieni che questo risolverà il problema di OP?
milo526,

0

in Ubuntu 14.04 basato sulla tua versione php: 5.6,7.0,7.1,7.2,7.3

sudo apt-get install php {versione} -mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.