Laravel nécessite L'extension PHP De Mcrypt
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).
Qu'est-ce qui ne va pas, et comment puis-je le réparer?
22 réponses
les extensions activées sur le web et les extensions activées en ligne de commande peuvent différer. Exécuter 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
depuis votre terminal.
dans ce fichier php.ini
vous pouvez activer l'extension.
OSX
j'ai entendu parler de gens sur OSX courant problèmes dus au terminal pointant 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 ceci (je n'utilise pas réellement OSX donc cela pourrait ne pas être 100%):
export PATH=/usr/local/php5/bin:$PATH
Ubuntu
Sur les anciennes versions d'Ubuntu (avant 14.04) lorsque vous l'exécutez sudo apt-get install php5-mcrypt
il ne fait pas installer l'extension dans le mods-available
. Il faut le relier par un lien symbolique.
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
sur toutes les versions Ubuntu, vous aurez besoin d'activer le mod une fois qu'il est installé. Vous pouvez le faire avec php5enmod
.
sudo php5enmod mcrypt
sudo service apache2 restart
NOTES
- PHP 7.1 obsolète mcrypt et 7.2 a supprimé l'extension mcrypt entièrement
- Laravel 5.1 et plus tard supprimé la nécessité d'mcrypt
avez-vous des MAMP installé?
utilisez which php
dans 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_profile
dans le répertoire de l'utilisateur, c'est-à-dire: cd ~
dans .bash_profile
, ajouter la ligne suivante:
export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH
édité: vous devez D'abord utiliser la commande cd /Applications/MAMP/bin/php
pour vérifier quelle version PHP de MAMP vous utilisez, puis la remplacer par la version PHP ci-dessus.
puis restart
le terminal pour voir quel PHP vous utilisez maintenant.
et ça devrait marcher maintenant.
à ceux qui utilisent XAMPP 1.7.3 et Mac
- aller au Terminal
- Entrée
which php
- s'il est écrit
/usr/bin/php
, passez à 3.
- s'il est écrit
- Entrée
sudo nano ~/.bash_profile
(ousudo vim ~/.bash_profile
si vous savez comment l'utiliser) - puis coller ce
export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
- Ctrl+O puis entrer pour enregistrer, puis Ctrl+X pour quitter.
- Type
cd ~
- type
. .bash_profile
- redémarrez le terminal.
- inscrivez
which php
. Si vous l'avez bien fait, il devrait être le même que le chemin du #4.
la raison de l'erreur de mcrypt est que votre Mac utilise son php natif, vous devez le changer pour celui de xampp.
P. S. Je le recommande en utilisant MAMP pour Laravel 4 pour les utilisateurs Mac, ce problème sera résolu avec l'erreur d'information de fichier php sans effort, et la version php de xampp est tellement dépassée.
pour les utilisateurs non MAMP ou XAMPP sur OSX (avec homebrew installé):
brew install homebrew/php/php56-mcrypt
santé!
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 depuis le CLI.
in 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 mods-available:
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini
activer:
sudo php5enmod mcrypt
redémarrer php5-fpm:
sudo service php5-fpm restart
obtenir Laravel travaillant sur Apache
version PHP: PHP 5.5.9
Ubuntu version: 14.04
j'avais un projet laravel en cours sur windows. quand je l'ai copié sur le serveur ubuntu , j'ai commencé à avoir mcrypt erreur. cela après beaucoup d'heures d'essai et d'erreur
obtenir de l'artisan de commande de travail
(si vous ont une erreur de mcrypt lors de l'utilisation de l'outil en ligne de commande artisan)
j'ai fait beaucoup d'essais et d'erreurs donc chaque fois que j'ai lancé la commande php5enmod avant, j'ai eu des messages d'erreur. mais sur fresh install il n'y avait aucun message d'erreur. après cette étape, j'ai obtenu artisan commande de travail
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 avez une erreur de mcrypt dans le navigateur lors de l'accès local laravel page d'index)
sudo nano /etc/php5/apache2/php.ini
ajouter la ligne suivante dans la section extensions compilées dynamiquement de php ini
extension=mcrypt.so
redémarrer le serveur apache, purger le cache laravel et tout ce qui fonctionne
pour les installations php-fpm sur Ubuntu 14.04, les suivantes ont fonctionné pour moi:
sudo apt-get install php5-mcrypt
cela créera mcrypt.ini
fichier à l'intérieur /etc/php5/mods-available/
puis
sudo php5enmod mcrypt
va créer un lien symbolique dans: /etc/php5/fpm/conf.d/
redémarrez simplement les services php-fpm
sudo service php5-fpm restart
Pour ubuntu essayer ces étapes si d'autres ne fonctionnent pas:
-
cd ~
-
sudo apt-get remove php5-mcrypt
-
sudo apt-get install php5-mcrypt
-
sudo php5enmod mcrypt
-
sudo service apache2 restart
Espère que cela va aider. Merci !
ou, utiliser:
sudo apt-get install php5-mcrypt
pas sûr que cela fonctionnera sur les installations PHP standard-j'ai installé php 5.5.7
en utilisant le paquet de:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
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:
- renommer ou supprimer le fichier ini php55
- créer symlink
- redémarrer 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
alors vous pouvez vérifier vos modules php via:
php -m
cela résolu pour moi sur mon Linux Mint environnement local https://askubuntu.com/questions/350942/cannot-get-mcrypt-for-php5
j'avais besoin de faire un lien symbolique vers /etc/php5/conf.d / mcrypt.fichier ini dans les dossiers suivants /etc/php5/apache2/conf.d / mcrypt.ini et / etc / php5/cli / conf.d / mcrypt.ini
Vous avez besoin d'un tout dans un environnement. 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 .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
aussi Jeffrey a un libre tutoriel sur le sujet: https://laracasts.com/series/laravel-5-fundamentals/episodes/2
je vous conseille d'aller avec homestead parce que vous preinstall tous les outils suivants.
- Ubuntu 14.04
- PHP 5.6
- HHVM
- Nginx
- MySQL
- Postgres
- Noeud (Avec Bower, Grunt, et Gulp)
- Redis
- Memcached
- Beanstalkd
- Laravel Envoy
- Tissu + HipChat Extension
en savoir plus sur @JetLaggy:
après avoir essayé encore et encore de modifier .bash_profile avec le répertoire MAMP, j'ai modifié les permissions des fichiers pour le répertoire php MAMP et j'ai pu obtenir 'which php' pour afficher le répertoire approprié. Le problème était que d'autres fonctions ne fonctionnaient pas, comme 'php-v'.
donc j'ai mis à jour MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp
Cela a fait le tour de ma configuration. J'ai dû ajuster mon chemin pour refléter la version mise à jour de PHP, mais une fois que je l'ai fait, tout a fonctionné!
on OS X
Using 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 php de MAMP et prendre note de la version (par exemple, php5.6.7).
une fois que vous savez version, vous devez éditer le fichier ~/.bash_profile
(c'est-à-dire le fichier .bash_profile
qui est 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 avec la version de PHP que vous avez sélectionnée dans MAMP.
une fois que le fichier a été sauvegardé, assurez-vous de fermer votre Terminal et de l'ouvrir de nouveau. Une fois que cela a été fait, vous utiliserez le PHP qui est fourni avec MAMP.
une façon de trouver facilement ce que la ligne devrait être que vous devez mettre à l'intérieur de votre .bash_profile
est d'exécuter la commande suivante à l'intérieur de votre terminal:
echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \
| grep php | grep -i LoadModule | head -n1 \
| sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\//'`/bin:$PATH
copier et coller ces trois lignes dans votre terminal produira correctement la version PHP qui a été sélectionnée dans le panneau de contrôle MAMP.
À L'Aide De 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 paquets.
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 php70
par la version de PHP que vous avez installée.
Vérifier le chemin PHP avec Homebrew-php
Homebrew-php ( https://github.com/Homebrew/homebrew-php ) est un tap qui possède 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 php56
par la version de PHP que vous avez installée.
si vous utilisez Z Shell, faites simplement ce qui suit:
- Ouvrir un terminal
- sudo
nano ~/.zshrc
- Coller ceci:
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
- Enregistrer
- Exécuter
source ~/.zshrc
- Run
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.
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
OSX with brew
$ brew install mcrypt php70-mcrypt
j'exécute PHP 7.0.x, alors changez "php70" pour 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
.
pour ceux qui viennent encore ici aujourd'hui:
Laravel n'a plus besoin de mcrypt
extension . mcrypt
est obsolète, la dernière mise à jour de libmcrypt remonte à 2007. Laravel 4.2 est obsolète et n'a plus de soutien. 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é retiré de Laravel en juin 2015: https://github.com/laravel/framework/pull/9041
dans ubuntu 14.04 basé sur 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