web-dev-qa-db-fra.com

Utilisation de la constante non définie MCRYPT_RIJNDAEL_128 - supposé 'MCRYPT_RIJNDAEL_128'

J'ai installé Laravel avec succès, mais après avoir exécuté php artisan serve Et accédé à localhost:8000, J'obtiens cette erreur:

Utilisation de la constante non définie MCRYPT_RIJNDAEL_128 - supposé 'MCRYPT_RIJNDAEL_128'

J'ai vérifié phpinfo() sur localhost:8888 Et il est dit que mcrypt est correctement installé. Mais la seule chose à laquelle je peux penser est que mon chemin est peut-être faux?

dans mon .bash_profile j'ai

PATH=/usr/local/bin:$PATH

Chaque fois que j'essaie d'exécuter les commandes Laravel, je dois taper ceci dans le terminal:

export PATH="~/.composer/vendor/bin:$PATH" 

Je cours sur un Mac. Existe-t-il un moyen simple de configurer mon bash_profile Afin que je puisse constamment changer entre les adresses des hôtes locaux et que toutes les fonctions PHP PHP fonctionnent correctement)?

10
Philip

Ce problème par rapport au chargeur d'extensions PHP. Vous n'avez pas besoin d'utiliser la commande laravel du tout après une installation réussie. Laravel Le framework a besoin de la bibliothèque Mcrypt pour le module de sécurité et crypte une partie du fichier de configuration.

Les choses dont vous avez besoin sont ces étapes.

  1. Télécharger Mcrypt http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download

puis configurez make et installez-le.

  1. Télécharger php http://php.net/releases/index.php Ci-dessus 5.5.14 sont suggérés. (Utilisez ce chemin plus tard à l'étape 4)

  2. puis téléchargez Autoconfigure

    curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
    tar xvfz autoconf-latest.tar.gz
    cd autoconf-2.69/
    ./configure
    make
    Sudo make install
    
  3. alors vous devez aller au niveau du répertoire

    cd ***YOURPHPDIRECTORY***/ext/mcrypt/
    

    et exécutez phpize dans ce niveau de répertoire

    /usr/bin/phpize
    ./configure
    make
    Sudo make install
    
  4. modifiez votre php.ini pour activer l'extension mcrypt en l'insérant dans php.ini

    extension=mcrypt.so
    
  5. Redémarrez le serveur Web.
2
ZenithS

Un moyen plus simple sur Ubuntu

  • apt-get install php5-mcrypt
  • mv -i /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/
  • php5enmod mcrypt
  • service Apache2 restart

Remarque: si vous n'avez pas "/etc/php5/conf.d" sautez simplement cette étape et cela fonctionnera bien

vérifier http://php.net/manual/en/mcrypt.installation.php

10
Eslam Mahmoud

Pour les utilisateurs de Mac spécialement - installez-le en utilisant Home Brew

J'ai installé une installation Laravel vide et j'ai reçu le message d'erreur suivant lors de la navigation vers http: // localhost/kanban/public / :

Remarque: Utilisation de la constante MCRYPT_RIJNDAEL_128 non définie - supposé "MCRYPT_RIJNDAEL_128" dans /Library/WebServer/Documents/xxx/config/app.php à la ligne 83

La recherche de ce message d'erreur sur Google renvoie de nombreux didacticiels sur la façon d'installer mcrypt sur Mac OS X (que ce soit en le construisant à partir de la source ou en utilisant Homebrew). Le problème était que les packages mcrypt et php55-mcrypt étaient correctement installés:

$ brew install mcrypt
Warning: mcrypt-2.6.8 already installed
$ brew install php55-mcrypt
Warning: php55-mcrypt-5.5.20 already installed

Mcrypt a également été correctement chargé par PHP:

$ php -m | grep mcrypt
mcrypt

$ php -i | grep mcrypt
Additional .ini files parsed => /usr/local/etc/php/5.5/conf.d/ext-mcrypt.ini,
Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value

pour plus de détails, référez-vous à ce lien - http://benohead.com/mac-os-x-php-notice-use-undefined-constant-mcrypt_rijndael_128/

3
Suyog Sawant

Si vous voyez cela sur ubuntu ou sur d'autres versions de * nix, il peut être utile de procéder comme suit:

service php5-fpm restart
2
tven

J'utilise nginx et php-fpm, et j'ai déjà fait apt-get install php5-mcrypt, et déplacé le mcrypt.ini fichier vers mods-available.

Je devais faire Sudo service php5-fpm restart avant que cela ne fonctionne réellement.

0
WoodyDRN

Je viens de régler le .bash_profile dans MacOS et cela a fonctionné:

export PATH="/usr/local/sbin:$PATH"
PHP_AUTOCONF="/usr/local/bin/autoconf"
source ~/.bash_aliases
0
jonasantonelli

J'ai également rencontré ce problème en essayant de déployer un Laravel vers Apache sur Mac OS Sierra. J'ai finalement trouvé ce message qui donnait des instructions étape par étape pour résoudre ce problème. Ces instructions supposent que vous avez Homebrew installé; si vous ne l'avez pas installé, collez ce qui suit dans une fenêtre de terminal pour l'installer:

/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Voici les étapes pertinentes collées à partir du message ci-dessus:

Étape 1: installez autoconf et mcrypt

J'ai utilisé homebrew pour installer autoconf et mcrypt, ce qui est aussi simple que:

brew install autoconf mcrypt

Si cela ne fonctionne pas pour vous, ou si vous ne souhaitez pas utiliser homebrew, consultez ce tutoriel .

Étape 2: Construisez l'extension PHP

Pour construire l'extension PHP, vous aurez besoin du code source PHP 5.4.17 disponible en téléchargement ici et extrayez-le:

cd ~/Downloads
unzip PHP-5.4.17.Zip

Créez ensuite l'extension à l'aide des commandes suivantes:

cd php-src-PHP-5.4.17/ext/mcrypt/
/usr/bin/phpize
./configure
make
Sudo make install

Étape 3: Activez l'extension

Il ne reste plus qu'à activer l'extension en éditant /etc/php.ini. Si ce fichier n'est pas présent, copiez /etc/php.ini.default et renommez-le:

Sudo cp /etc/php.ini.default /etc/php.ini

Modifiez le fichier /etc/php.ini et ajoutez ce qui suit:

extension=mcrypt.so

Étape 4: Redémarrez Apache Maintenant, redémarrez Apache et vous avez terminé!

Sudo apachectl restart

NOTES SUPPLÉMENTAIRES ET CLARIFICATION

J'ai rencontré deux problèmes en suivant ces étapes:

  1. J'ai dû faire correspondre le PHP fichier Zip que j'ai téléchargé à la version de PHP qui a été installée sur ma machine.

J'ai donc fait

php -v

pour déterminer le numéro de version, puis modifié le téléchargement pour correspondre à ce numéro de version. Dans mon cas, la version PHP était 5.6.28 et j'ai donc dû télécharger la source PHP depuis

https://github.com/php/php-src/archive/PHP-5.6.28.Zip
  1. J'ai obtenu une exception à l'étape 2 lorsque j'ai essayé de faire le Sudo make install, l'exception a été causée par SIP, une sécurité ajoutée par El Capitan. L'exception est décrite dans cette question , et la résolution de ce problème que j'ai trouvée dans cette réponse .

L'application des informations de cette réponse a changé l'étape 2 ci-dessus et remplacé le Sudo make install avec les éléments suivants:

mkdir -p /usr/local/lib/php/extensions
Sudo make EXTENSION_DIR='/usr/local/lib/php/extensions' install

Notez qu'en raison de cette modification, l'étape 4 ci-dessus doit également être modifiée pour inclure le chemin d'accès à mcrypt.so. Donc, ce qui suit doit aller dans le php.ini:

extension=/usr/local/lib/php/extensions/mcrypt.so
0
BruceHill