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?
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.
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
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
- PHP 7.1, obsolète, mcrypt et 7.2 a a complètement supprimé l'extension mcrypt
- Laravel 5.1 et versions ultérieures Suppression de la nécessité de mcrypt
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.
À ceux qui utilisent XAMPP 1.7.3 et Mac
which php
/usr/bin/php
, passez à l'étape 3.Sudo nano ~/.bash_profile
(ou Sudo vim ~/.bash_profile
si vous savez vous en servir)export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
cd ~
. .bash_profile
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.
Pour les utilisateurs non MAMP ou XAMPP sous OSX (avec homebrew installé):
brew install homebrew/php/php56-mcrypt
À votre santé!
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.
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
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
Pour Ubuntu, essayez 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
J'espère que ça va aider. Merci !
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
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
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:
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
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
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
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.
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é!
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.
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.
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.
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.
Si vous utilisez Z Shell, procédez comme suit:
nano ~/.zshrc
export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
source ~/.zshrc
which php
- vous devriez obtenir le chemin MAMP 5.6.105.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
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
$ 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
.
Sudo php installer mcrypt
Sudo php5enmod mcrypt
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