My setup:
- OS: Mac OS X Yosemite (10.10.1)
- Using Homebrew
- PHP: 5.5.14
I’ve installed an empty Laravel installation and got the following error message when navigating to http://localhost/kanban/public/:
Notice: Use of undefined constant MCRYPT_RIJNDAEL_128 – assumed ‘MCRYPT_RIJNDAEL_128’ in /Library/WebServer/Documents/xxx/config/app.php on line 83
Googling for this error message return many tutorials on how to install mcrypt on Mac OS X (whether building it from source or using Homebrew). The problem was that both the mcrypt and the php55-mcrypt packages were properly installed:
$ brew install mcrypt
Warning: mcrypt-2.6.8 already installed
$ brew install php55-mcrypt
Warning: php55-mcrypt-5.5.20 already installed
Mcrypt was also properly loaded by 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
Looking at the results of phpinfo() in a Web browser, I could notice two things:
- No mention of mcrypt being loaded
- Scan this dir for additional .ini files: /Library/Server/Web/Config/php
Actually the directory /Library/Server/Web/Config/php didn’t exist (neither did the parent directories). Since the command line php seemed to scan the directory /usr/local/etc/php/5.5/conf.d for additional .ini files, I did the following:
First, I created the directory PHP wanted to scan:
sudo mkdir -p /Library/Server/Web/Config/php
Then, I created a symbolic link from the crypt ini file loaded by my PHP CLI to this directory:
sudo ln -s /usr/local/etc/php/5.5/conf.d/ext-mcrypt.ini /Library/Server/Web/Config/php/ext-mcrypt.ini
Finally, I restarted Apache:
sudo apachectl restart
After that checking the output of phpinfo() in my browser, I could see the following:
mcrypt
mcrypt support enabled mcrypt_filter support enabled Version 2.5.8 Api No 20021217 Supported ciphers cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes Supported modes cbc cfb ctr ecb ncfb nofb ofb stream
Directive Local Value Master Value mcrypt.algorithms_dir no value no value mcrypt.modes_dir no value no value
And the Laravel application was working !
Thank you, works like a charm.
Before your help:
php artisan inspire
PHP Notice: Use of undefined constant MCRYPT_RIJNDAEL_128 – assumed ‘MCRYPT_RIJNDAEL_128’
After:
php artisan inspire
Simplicity is the ultimate sophistication. – Leonardo da Vinci
THANKS!!!
Thank you – worked perfectly! Really appreciate you posting the solution in such detail
Thanks buddy, It worked for me. I’ve updated brew first, then able to find php5 mcrypt.
Thanks man…. U saved my 1-2 hours..Thanks a lot.
Awesome! Found php55-mcrypt in a brew tap, then did what you said here and …ta-daaa it worked!