web-dev-qa-db-fra.com

Laravel a besoin du Mcrypt PHP extension

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

Laravel requires the Mcrypt PHP extension.

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

Quel est le problème, et comment puis-je résoudre ce problème?

enter image description here

377
Patrick Reck

Les extensions compatibles Web et les extensions compatibles avec la ligne de commande peuvent différer. Exécutez php -m dans votre terminal et vérifiez si mcrypt est répertorié. Si ce n'est pas le cas, vérifiez où la ligne de commande charge votre fichier php.ini en exécutant php --ini à partir de votre terminal.

Dans ce fichier php.ini, vous pouvez activer l'extension.

OSX

J'ai entendu parler de personnes sur OSX qui rencontraient des problèmes en raison du terminal pointant sur le PHP natif fourni avec OSX. Vous devriez plutôt mettre à jour votre profil bash pour inclure le chemin d'accès réel à votre PHP. Quelque chose comme ça (je n'utilise pas réellement OSX, donc ça pourrait ne pas être à 100%):

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

Ubuntu

Sur les versions antérieures d'Ubuntu (antérieures à 14.04) lorsque vous exécutez Sudo apt-get install php5-mcrypt, l'extension n'est pas réellement installée dans le mods-available. Vous aurez besoin de faire un lien symbolique.

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 qu'il est installé. Vous pouvez le faire avec php5enmod.

Sudo php5enmod mcrypt
Sudo service Apache2 restart

REMARQUES 

247
Jason Lewis

Avez-vous installé MAMP?

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

S'il ne s'agit pas de la version PHP de MAMP, vous devez éditer ou ajouter .bash_profile dans le répertoire de base de l'utilisateur, à savoir: cd ~.

Dans .bash_profile, ajoutez la ligne suivante:

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

Edited: Vous devez d’abord utiliser la commande cd /Applications/MAMP/bin/php pour vérifier quelle version de PHP de MAMP vous utilisez, puis la remplacer par la version PHP ci-dessus.

Ensuite, restart le terminal pour voir quel PHP vous utilisez maintenant.

Et cela devrait fonctionner maintenant.

334
JustinHo

À ceux qui utilisent XAMPP 1.7.3 et Mac

  1. Aller au terminal
  2. Entrez which php
    • S'il indique /usr/bin/php, passez à l'étape 3.
  3. Entrez Sudo nano ~/.bash_profile (ou Sudo vim ~/.bash_profile si vous savez vous en servir)
  4. Puis collez ce export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+O puis entrez pour sauvegarder, puis Ctrl+X pour quitter.
  6. Tapez cd ~
  7. tapez . .bash_profile
  8. redémarrer le terminal.
  9. Entrez which php. Si vous avez bien fait les choses, le chemin devrait être le même que dans le n ° 4.

La raison de l'erreur mcrypt est parce que votre Mac utilise son php natif, vous devez le changer pour celui que xampp a.

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

141
Bryan P

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

brew install homebrew/php/php56-mcrypt

À votre santé!

84
oozzal

Utiliser Ubuntu, juste

Sudo php5enmod mcrypt

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

45
mppfiles

Dans Ubuntu (PHP-FPM, Nginx)

Sudo apt-get install php5-mcrypt

Après avoir installé php5-mcrypt

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

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

37
Nanhe Kumar

Faire travailler Laravel sur Apache

Version PHP: PHP 5.5.9

Ubuntu version: 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é à avoir l'erreur mcrypt. cela après beaucoup d'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écutais la commande php5enmod auparavant, j'avais des messages d'erreur. mais lors de la nouvelle installation, il n'y avait pas de message d'erreur. après cette étape, je suis artisan commande 

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

corriger l'erreur de navigateur  

(si vous rencontrez une erreur mcrypt dans le navigateur lors de l'accès à la page d'index locale de 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 fonctionne correctement 

24
Sojan V Jose

Pour Ubuntu, essayez ces étapes si d’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 ça va aider. Merci !

18
Sagiruddin Mondal

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 fichier mcrypt.ini dans /etc/php5/mods-available/

Ensuite 

Sudo php5enmod mcrypt

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

Il suffit de redémarrer les services php-fpm Sudo service php5-fpm restart

18
Prateek Choudhary

Ou utiliser:

Sudo apt-get install php5-mcrypt

je ne sais pas si cela fonctionnera avec les installations standard PHP. J'ai installé php 5.5.7 en utilisant le paquet de:

Sudo add-apt-repository ppa:ondrej/php5 
Sudo apt-get update
17
JoeTidee

Mon système d'exploitation est Yosemite.

Je résous ce problème en recherchant les 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
15
d.danailov

Juste pour les yumers,

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

Peut-être avez-vous besoin d'installer remi repo

15
Sean

Cela a résolu le problème pour moi sur mon environnement local Linux Mint https://askubuntu.com/questions/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

14
Theo Kouzelis

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 éditer (créer) votre fichier .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 propose également un didacticiel gratuit à ce sujet: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

Je vous conseille d'aller avec Homestead car vous préinstallerez tous les outils suivants.

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Node (avec Bower, Grunt et Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Envoyé de Laravel
  • Extension Fabric + HipChat
12
mburakergenc

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 'php' qui afficherait le bon répertoire. Le problème était que d'autres fonctions ne fonctionnaient pas, telles que «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 PATH pour refléter la version mise à jour de PHP, mais une fois que j'ai fait, tout a fonctionné!

10
abaumer

Sur OS X

Utiliser MAMP

Entrez la commande which php dans le terminal pour voir quelle version de PHP vous utilisez. Si ce n'est pas 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 de PHP de MAMP et prendre note de la version (par exemple, php5.6.7).

Une fois que vous connaissez la version, modifiez le fichier ~/.bash_profile (c’est-à-dire le .bash_profile qui se trouve dans votre répertoire personnel) et ajoutez 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 sauvegardé, assurez-vous de fermer votre terminal et de le rouvrir. Une fois que cela sera fait, vous utiliserez le PHP fourni avec MAMP.


Une façon de trouver facilement ce que la ligne doit être que vous devez mettre dans votre .bash_profile consiste à 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 produira correctement la version PHP sélectionnée dans le panneau de configuration de MAMP.

Utiliser Homebrew/MacPorts

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

Vérification du chemin PHP avec MacPorts

Vous pouvez trouver l'emplacement exact de PHP à l'aide de MacPorts à l'aide de la commande suivante:

port contents php70 | grep bin/php

Notez que vous devez remplacer php70 par 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 contient différentes versions de PHP.

Vous pouvez trouver l'emplacement exact de PHP à l'aide de Homebrew à l'aide de la commande suivante:

brew --prefix homebrew/php/php56

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

8
Tim Groeneveld

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. Sauvegarder  
  5. Exécuter source ~/.zshrc
  6. Exécuter which php - vous devriez obtenir le chemin MAMP 5.6.10

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

4
Unwired

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
4
Gowthaman

Pour ceux qui viennent encore ici aujourd'hui:

Laravel n'a plus besoin de l'extension mcrypt. mcrypt est 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) consiste à mettre à jour Laravel> 5.1 (il n’existait pas de LTS avant Laravel 5.2).

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

2
rap-2-h

OSX avec brassage

$ brew install mcrypt php70-mcrypt

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

2
kris

Sudo php installer mcrypt

Sudo php5enmod mcrypt

0
Anubhav Tiwari

dans Ubuntu 14.04 sur la base 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 
0
Jignesh Joisar