mac - mcrypt php extension required. laravel xampp




Laravel requires the Mcrypt PHP extension (15)

I am trying to use the migrate function in Laravel 4 on OSX. However, I am getting the following error:

Laravel requires the Mcrypt PHP extension.

As far as I understand, it's already enabled (see the image below).

What is wrong, and how can I fix it?


sudo php install mcrypt

sudo php5enmod mcrypt


OSX with brew

$ brew install mcrypt php70-mcrypt

I am running PHP 7.0.x, so change "php70" to your version, if you are using a different version.
As stated in other answers, you can see your php version with $ php -v.


For those who still come here today:

Laravel does not need mcrypt extension anymore. mcrypt is obsolete, the last update to libmcrypt was in 2007. Laravel 4.2 is obsolete too and has no more support. The best (=secure) solution is to update to Laravel >5.1 (there is no LTS before Laravel 5.2).

Mcrypt was removed from Laravel in June 2015: https://github.com/laravel/framework/pull/9041


Getting Laravel working on Apache

PHP version : PHP 5.5.9

Ubuntu version : 14.04

i had a working laravel project on windows. when i copied it to ubuntu server , i started getting the mcrypt error. this after a lot of hours of trial and error

getting artisan command working

(if you are having mcrypt error while using artisan command line tool)

i did a lot of trial and error so each time i run the php5enmod command before, i had error messages. but on fresh install there was no error messages. after this step i got artisan command working

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

fixing the browser error

(if you are having mcrypt error in browser when accessing local laravel index page)

sudo nano /etc/php5/apache2/php.ini

add the following line under the dynamically compiled extensions section of php ini

extension=mcrypt.so

restart the apache server , purge the laravel cache and everything working


Expanding on @JetLaggy:

After trying again and again to modify .bash_profile with the MAMP directory, I changed the file permissions for the MAMP php directory and was able to get 'which php' to show the proper directory. Trouble was that other functions didn't work, such as 'php -v'.

So I updated MAMP. http://documentation.mamp.info/en/mamp/installation/updating-mamp

This did the trick for my particular setup. I had to adjust my PATH to reflect the updated version of PHP, but once I did, everything worked!


For non MAMP or XAMPP users on OSX (with homebrew installed):

brew install homebrew/php/php56-mcrypt

Cheers!


For ubuntu try these steps if others are not working :

  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

Hope that will help. Thanks !


If you are using Z Shell, just do the following:

  1. Open terminal
  2. sudo nano ~/.zshrc
  3. Paste this; export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. Save
  5. Run source ~/.zshrc
  6. Run which php - you should get the MAMP 5.6.10 path

5.6.10 is the version of PHP you set in your MAMP.


Just for yumers,

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

Maybe you need install remi repo


My OS is Yosemite.

I resolve this issue, by finding configuration paths:

php --ini

Example output:

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)

Next steps:

  1. Rename or Delete php55 ini file
  2. Create symlink
  3. Restart Apache server

Commands:

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

Then you can check your php modules via:

php -m

The web enabled extensions and command line enabled extensions can differ. Run php -m in your terminal and check to see if mcrypt is listed. If it's not then check where the command line is loading your php.ini file from by running php --ini from your terminal.

In this php.ini file you can enable the extension.

OSX

I have heard of people on OSX running in to problems due to the terminal pointing to the native PHP shipped with OSX. You should instead update your bash profile to include the actual path to your PHP. Something like this (I don't actually use OSX so this might not be 100%):

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

Ubuntu

On earlier versions of Ubuntu (prior to 14.04) when you run sudo apt-get install php5-mcrypt it doesn't actually install the extension into the mods-available. You'll need to symlink it.

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini

On all Ubuntu versions you'll need to enable the mod once it's installed. You can do that with php5enmod.

sudo php5enmod mcrypt
sudo service apache2 restart

NOTES



Using Ubuntu, just

sudo php5enmod mcrypt

did the trick for me. You don't need to restart Apache since you need to use PHP just from the CLI.


You need an all in one environment. You may use MAMP or XAMPP or any other tools. After installing one of these tools you will need to edit(create) your .bash_profile(Assuming that you use bash).

Or even simple and more professional you can use Laravel Homestead.

Here is a link to official documentation: http://laravel.com/docs/5.0/homestead

Also Jeffrey has a free tutorial about it: https://laracasts.com/series/laravel-5-fundamentals/episodes/2

I advice you to go with homestead because you will preinstall all of the following tools.

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Node (With Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Laravel Envoy
  • Fabric + HipChat Extension

in ubuntu 14.04 based on your 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 




mcrypt