Laravel nécessite l'extension Mcrypt PHP

429

J'essaie d'utiliser la migratefonction Laravel 4sur OSX. Cependant, j'obtiens l'erreur suivante:

Laravel requires the Mcrypt PHP extension.

Pour autant que je comprends, il est déjà activé (voir l'image ci-dessous).

Qu'est-ce qui ne va pas et comment puis-je y remédier?

entrez la description de l'image ici

Patrick Reck
la source
Utilisez-vous Laravel 3 ou 4?
Jan P.
Je viens d'ajouter les informations au message. C'est Laravel 4
Patrick Reck
4
Peut-être que ce message vous aidera: stackoverflow.com/questions/14476181/…
Jan P.
Utilisez-vous PHP intégré ou avez-vous installé une autre version? Si oui, comment l'avez-vous installé?
Jamie Schembri
2
J'ai trouvé cette solution facile en utilisant homebrew: jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis

Réponses:

289

Les extensions activées pour le Web et les extensions activées pour la ligne de commande peuvent différer. Exécutez php -mvotre terminal et vérifiez s'il mcryptest répertorié. Si ce n'est pas le cas, vérifiez d'où la ligne de commande charge votre php.inifichier en exécutant à php --inipartir de votre terminal.

Dans ce php.inifichier, vous pouvez activer l'extension.

OSX

J'ai entendu parler de problèmes sous OSX dus au fait que le terminal pointait vers le PHP natif livré avec OSX. Vous devriez plutôt mettre à jour votre profil bash pour inclure le chemin réel vers votre PHP. Quelque chose comme ça (je n'utilise pas réellement OSX donc ce n'est peut-être pas 100%):

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

Ubuntu

Sur les versions antérieures d'Ubuntu (avant le 14.04), lorsque vous l'exécutiez, sudo apt-get install php5-mcryptil n'installait pas réellement l'extension dans mods-available. Vous devrez le lier symboliquement.

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

Sur toutes les versions d'Ubuntu, vous devrez activer le mod une fois installé. Vous pouvez le faire avec php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart

REMARQUES

Jason Lewis
la source
4
cela a fonctionné pour moi sur Ubuntu, merci! Bizarre comment sudo apt-get install php5-mcryptn'installe pas réellement l'extension complètement.
Aristides
Ubuntu 13.10 - J'ai également dû installer mcrypt lui
Ondrej Galbavý
1
Apparemment, il avait déjà installé l'ini mcrypt dans mods-available, je ne connaissais tout simplement pas la commande php5enmod. L'utiliser fait fonctionner comme un charme. Merci!
imkingdavid
Donc, juste à ce sujet, j'ai mcrypt répertorié lorsque je vais php -m, quand je vais quel php il dit / usr / local / bin / php. Ive a essayé d'installer mcrypt avec brew et semble avoir fonctionné .. Mais Laravel dit toujours que l'extension PHP Mcrypt est requise.
Marais Rossouw
1
Comme @imkingdavid, je n'avais pas non plus besoin du lien symbolique. php5enmod était suffisant. Ubuntu 14.04 LTS
Brett
340

Avez-vous installé MAMP ?

Utilisez which phpdans le terminal pour voir quelle version de PHP vous utilisez.

Si ce n'est pas la version PHP de MAMP, vous devez éditer ou ajouter .bash_profiledans le répertoire personnel de l'utilisateur, c'est-à-dire:cd ~

Dans .bash_profile, ajoutez la ligne suivante:

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

Modifié: vous devez d'abord utiliser la commande cd /Applications/MAMP/bin/phppour vérifier la version PHP de MAMP que vous utilisez, puis la remplacer par la version PHP ci-dessus.

Ensuite, restartle terminal pour voir quel PHP vous utilisez maintenant.

Et cela devrait fonctionner maintenant.

JustinHo
la source
18
Vous n'avez pas besoin de MAMP pour obtenir Mcrypt.
jackyalcine
48
bien sûr, vous n'avez pas besoin de MAMP pour obtenir Mcrypt. cette réponse est juste pour les personnes qui ont plusieurs versions de PHP installées sur leur ordinateur, par exemple XAMPP ou MAMP, ou autres.
JustinHo
De même, pour les utilisateurs d'AMPPS: export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... en supposant que vous photographiez pour 5.4.xx, il y a aussi 5.3 et 5.5 dedans.
Joel Mellon
6
Tout le monde n'utilise pas MAMP, vous avez une réponse pour le reste des gens?
TuGordoBello
2
Juste pensé que je ferais remarquer, le cd ~est très important, vous devez ouvrir le .bash_profilequi existe là-bas, AUSSI important est que vous devez fermer votre terminal et rouvrir afin que les nouvelles variables bash soient chargées. Assurez-vous simplement d'exécuter quel php pour vérifier que votre modification a été appliquée, bon codage!
filaire00
142

Pour ceux qui utilisent XAMPP 1.7.3 et Mac

  1. Accéder au terminal
  2. Entrer which php
    • S'il est indiqué /usr/bin/php, passez à l'étape 3.
  3. Entrez sudo nano ~/.bash_profile(ou sudo vim ~/.bash_profilesi vous savez comment l'utiliser)
  4. Collez ensuite export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+Opuis entrez pour sauvegarder, puis Ctrl+Xpour quitter.
  6. Type cd ~
  7. type . .bash_profile
  8. redémarrer le terminal.
  9. Entrez which php. Si vous l'avez bien fait, cela devrait être le même que le chemin du # 4.

La raison de l'erreur mcrypt est que votre Mac utilise son php natif, vous devez le remplacer par celui de xampp.

PS Je recommanderais d'utiliser MAMP pour les utilisateurs de Laravel 4 pour Mac, ce problème sera résolu avec l'erreur d'informations sur les fichiers php sans sueur, et la version php de xampp est tellement obsolète.

Bryan P
la source
12
Aussi une bonne réponse! Devrait être ceci pour MAMP:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni
3
pour ceux qui n'ont pas ~ / .bash_profile, essayez de vérifier le ~ / .bashrc
Ironwind
6
exécute le .bash_profile immédiatement, normalement vous devez redémarrer pour que ces bash s'exécutent
Bryan P
Quelque chose de grave s'est produit et maintenant mon terminal ne reconnaît même plus sudo
Sunny R Gupta
Cela fonctionne aussi sur la lampe, changez simplement le chemin versexport PATH="/opt/lampp/bin:$PATH"
JTC
87

Pour les utilisateurs non MAMP ou XAMPP sur OSX (avec homebrew installé):

brew install homebrew/php/php56-mcrypt

À votre santé!

oozzal
la source
1
J'étais inquiet que cela ne fonctionne pas avec PHP OSX natif, mais je viens de l'installer et je n'ai pas eu à jouer avec mon PATH ou quoi que ce soit. Fonctionne juste. Joli.
Lauren
3
Ce serait formidable d'avoir cette réponse en annexe aux réponses principales sur ce fil, pour en faire une ressource plus complète. Merci pour les conseils rapides, comme Lauren l'a mentionné, cela résout vraiment le problème.
Bryan Rayner
4
C'est en fait $ brew install homebrew/php/php55-mcrypt, sinon obtenuError: No available formula with the name "php55-mcrypt"
Connor Leech
47

En utilisant Ubuntu, juste

sudo php5enmod mcrypt

a fait l'affaire pour moi. Vous n'avez pas besoin de redémarrer Apache car vous devez utiliser PHP uniquement à partir de la CLI.

mppfiles
la source
37

Dans Ubuntu (PHP-FPM, Nginx)

sudo apt-get install php5-mcrypt

Après l'installation de php5-mcrypt

vous devez créer un lien symbolique vers les fichiers ini dans les mods disponibles:

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

activer:

sudo php5enmod mcrypt

redémarrez php5-fpm:

sudo service php5-fpm restart

Plus de détails

Nanhe Kumar
la source
J'ai couru sudo aptitude -y install php5-mcrypt, suivi de sudo php5enmod mcryptet sudo service php5-fpm restart. (J'ai sauté l'étape de liaison douce). Cela a fonctionné :)
Aditya MP
26

Faire travailler Laravel sur Apache

Version PHP: PHP 5.5.9

Version Ubuntu: 14.04

j'ai eu un projet laravel de travail sur les fenêtres. quand je l'ai copié sur le serveur ubuntu, j'ai commencé à obtenir l'erreur mcrypt. cela après de nombreuses heures d'essais et d'erreurs

faire fonctionner la commande artisanale

(si vous rencontrez une erreur mcrypt lors de l'utilisation de l'outil de ligne de commande artisan)

j'ai fait beaucoup d'essais et d'erreurs donc à chaque fois que j'exécute la commande php5enmod avant, j'avais des messages d'erreur. mais lors d'une nouvelle installation, il n'y avait aucun message d'erreur. après cette étape, j'ai obtenu le travail de commande artisanale

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

correction de l'erreur du navigateur

(si vous rencontrez une erreur mcrypt dans le navigateur lors de l'accès à la page locale d'index laravel)

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

ajoutez la ligne suivante sous la section des extensions compilées dynamiquement de php ini

extension=mcrypt.so

redémarrez le serveur apache, purgez le cache laravel et tout ce qui fonctionne

Sojan V Jose
la source
Si vous travaillez sur l' image docker php , vous devez également exécuter docker-php-ext-install mcrypt. Testé sur l' image: php:5.6.31-apache. Sans cela, php -mne montre pas mcrypt.
Ewa
19

Pour les installations php-fpm sur Ubuntu 14.04, ce qui suit a fonctionné pour moi:

sudo apt-get install php5-mcrypt

Cela créera un mcrypt.inifichier à l'intérieur/etc/php5/mods-available/

alors

sudo php5enmod mcrypt

créera un lien symbolique dans: /etc/php5/fpm/conf.d/

Redémarrez simplement les services php-fpm sudo service php5-fpm restart

Prateek Choudhary
la source
19

Pour ubuntu, essayez ces étapes si les autres ne fonctionnent pas:

  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

J'espère que cela vous aidera. Merci !

Sagiruddin Mondal
la source
19

Ou utiliser:

sudo apt-get install php5-mcrypt

Je ne sais pas si cela fonctionnera sur les installations PHP standard - j'ai installé en php 5.5.7utilisant le package de:

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update
JoeTidee
la source
16

Mon OS est Yosemite.

Je résous ce problème, en trouvant des chemins de configuration:

php --ini

Exemple de sortie:

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)

Prochaines étapes:

  1. Renommer ou supprimer le fichier ini php55
  2. Créer un lien symbolique
  3. Redémarrez le serveur Apache

Commandes:

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

Ensuite, vous pouvez vérifier vos modules php via:

php -m
d.danailov
la source
16

Juste pour les yumers,

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

Vous avez peut-être besoin d'installer remi repo

Sean
la source
15

Cela l'a résolu pour moi sur mon environnement local Linux Mint /ubuntu/350942/cannot-get-mcrypt-for-php5

Je devais créer un lien symbolique vers mon fichier /etc/php5/conf.d/mcrypt.ini dans les dossiers suivants /etc/php5/apache2/conf.d/mcrypt.ini et /etc/php5/cli/conf.d /mcrypt.ini

Theo Kouzelis
la source
14

Vous avez besoin d'un environnement tout en un. Vous pouvez utiliser MAMP ou XAMPP ou tout autre outil. Après avoir installé l'un de ces outils, vous devrez modifier (créer) votre .bash_profile (en supposant que vous utilisez bash).

Ou même simple et plus professionnel, vous pouvez utiliser Laravel Homestead.

Voici un lien vers la documentation officielle: http://laravel.com/docs/5.0/homestead

Jeffrey a également un tutoriel gratuit à ce sujet: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

Je vous conseille de choisir Homestead car vous préinstallerez tous les outils suivants.

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Noeud (avec Bower, Grunt et Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Envoyé de Laravel
  • Tissu + extension HipChat
mburakergenc
la source
10

Développer sur @JetLaggy:

Après avoir essayé à plusieurs reprises de modifier .bash_profile avec le répertoire MAMP, j'ai changé les autorisations de fichier pour le répertoire php MAMP et j'ai pu obtenir «quel php» pour afficher le répertoire approprié. Le problème était que d'autres fonctions ne fonctionnaient pas, comme «php -v».

J'ai donc mis à jour MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp

Cela a fait l'affaire pour ma configuration particulière. J'ai dû ajuster mon CHEMIN pour refléter la version mise à jour de PHP, mais une fois que j'ai fait, tout a fonctionné!

abaumer
la source
9

Sous OS X

Utilisation de MAMP

Entrez la commande which phpdans le terminal pour voir quelle version de PHP vous utilisez. S'il ne s'agit pas de la version PHP de MAMP, la variable $ PATH utilisée par Bash devra être mise à jour.

Tout d'abord, vous devez utiliser la commande "cd / Applications / MAMP / bin / php" pour vérifier quelle version php de MAMP et prendre note de la version (par exemple, php5.6.7).

Une fois que vous connaissez la version, vous devez modifier le ~/.bash_profilefichier (c'est-à-dire celui .bash_profilequi se trouve dans votre répertoire personnel) et ajouter une ligne d'exportation:

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

Assurez-vous de remplacer php5.6.7 par la version de PHP que vous avez sélectionnée dans MAMP.

Une fois le fichier enregistré, assurez-vous de fermer votre terminal et de l'ouvrir à nouveau. Une fois cela fait, vous utiliserez le PHP fourni avec MAMP.


Une façon de trouver facilement la ligne que vous devez mettre dans votre .bash_profileest d'exécuter la commande suivante dans votre terminal:

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

Copier et coller ces trois lignes dans votre terminal affichera correctement la version PHP qui a été sélectionnée dans le panneau de configuration MAMP.

Utilisation de Homebrew / MacPorts

Assurez-vous que votre pathcontient /usr/local/bin/(Homebrew) ou /opt/local/bin(MacPorts) si vous utilisez PHP fourni avec l'un de ces deux gestionnaires de packages.

Vérifier le chemin PHP avec MacPorts

Vous pouvez trouver l'emplacement exact de PHP en utilisant MacPorts avec la commande suivante:

port contents php70 | grep bin/php

Notez que vous devez remplacer php70par la version de PHP que vous avez installée.

Vérifiez le chemin PHP avec Homebrew-php

Homebrew-php ( https://github.com/Homebrew/homebrew-php ) est un robinet qui a différentes versions de PHP.

Vous pouvez trouver l'emplacement exact de PHP en utilisant Homebrew avec la commande suivante:

brew --prefix homebrew/php/php56

Notez que vous devez remplacer php56par la version de PHP que vous avez installée.

Tim Groeneveld
la source
6

dans 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

ou

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt
Gowthaman D
la source
5

Si vous utilisez Z Shell, procédez comme suit:

  1. Terminal ouvert
  2. sudo nano ~/.zshrc
  3. Collez ceci; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. sauver
  5. Courir source ~/.zshrc
  6. Exécutez which php - vous devriez obtenir le chemin MAMP 5.6.10

5.6.10 est la version de PHP que vous définissez dans votre MAMP.

Sans fil
la source
3

OSX avec infusion

$ brew install mcrypt php70-mcrypt

J'utilise PHP 7.0.x, changez donc "php70" en votre version, si vous utilisez une version différente.
Comme indiqué dans d'autres réponses, vous pouvez voir votre version php avec $ php -v.

kris
la source
3

Pour ceux qui viennent encore ici aujourd'hui:

Laravel n'a plus besoin d' mcryptextension . mcryptest obsolète, la dernière mise à jour de libmcrypt date de 2007. Laravel 4.2 est également obsolète et n'a plus de support. La meilleure solution (= sécurisée) est de mettre à jour vers Laravel> 5.1 (il n'y a pas de LTS avant Laravel 5.2).

Mcrypt a été supprimé de Laravel en juin 2015: https://github.com/laravel/framework/pull/9041

rap-2-h
la source
J'ai résolu mon problème en exécutant la disposition de propriété familiale
0

sudo php install mcrypt

sudo php5enmod mcrypt

Anubhav Tiwari
la source
1
Bien que votre commentaire puisse être techniquement vrai, nous nous efforçons d'inclure des explications à vos réponses ici sur StackOverflow. De plus, il semble qu'OP soit déjà installé mcrypt, pourriez-vous expliquer pourquoi vous pensez que cela résoudra le problème d'OP?
milo526
0

dans ubuntu 14.04 en fonction de votre version php: 5.6,7.0,7.1,7,2,7,3

sudo apt-get install php {version} -mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 
Jignesh Joisar
la source