MAMP with Composer and MySQL on the Command Line
Many developers prefer MAMP for their local development environment. Running MySQL and Composer commands from a terminal window requires some configuration, and if you’re comfortable on the command line (or comfortable enough to be dangerous) this article will show you how to sync things up with MAMP.
Please note that this topic is not specific to Craft CMS. It applies to any PHP CMS or framework you choose.
Using Composer on the command line is not a requirement to work with Craft 3. With MAMP, you’ll do just as well (or better) to install Craft from a zip file then initiate updates from the Control Panel.
Using MAMP’s PHP Executable in Terminal #
When you run
composer on the command line, it runs under the PHP executable that the terminal session is configured to use. By default, this is most likely a different PHP executable than the one MAMP provides. In that case, the terminal’s PHP version and
php.ini settings (like
memory_limit) will be different than MAMP’s and will cause problems.
You can see which PHP executable your terminal session will use by running
which php. You can also see its
memory_limit setting by running
php -i | grep memory_limit.
In Craft’s Control Panel go to Utilities > PHP Info. Find
include_path on that page, and you will see something like this:
Remember that php version. Next, make sure you have a
.bash_profile file in your user directory.
Now go to your user folder, find and edit
.bash_profile. It’s a hidden file on Macs, so if you don’t see it, press
Command+Shift+. to show and hide hidden files. Add this line to the top:
php7.0.27 to match what you found previously in the Control Panel’s PHP Info page. Now your terminal will look for PHP in that MAMP directory before anywhere else.
To verify the change, exit your terminal window and open a new one. Run
which php and you should see something like:
Changes made to
.bash_profile only take when you start a new terminal session or run
PHP 7.0 is good enough for Composer with Craft 3. If you look at the
composer.json file, you’ll see a
platform setting that forces Composer packages to be compatible with PHP 7.0.
Using MAMP’s MySQL Server in Terminal #
If you want to run
mysqldump commands from your terminal, you’ll need to make sure you’re hitting MAMP’s MySQL Server in your terminal session. Edit the
.bash_profile file from the previous section and add MAMP’s MySQL path:
Now terminal will look for
mysql in MAMP’s
bin directory before anywhere else. Close your terminal session and open a new one. Don’t forget start MAMP’s MySQL server if it’s not already running.
php.ini Values #
MAMP runs slowly compared to production servers, so it needs extra time. It also needs plenty of memory allocated to PHP. Edit the
php.ini file for the version of PHP your Craft site is running. Go to File > Edit > Edit Template > PHP (php.ini) and select the version of PHP you’re using.
max_execution_timeand set it to
memory_limitand set it to
- Save and close the file
- Restart MAMP
Be kind to yourself and do that for all of MAMP’s PHP versions. Do use MAMP’s own
php.ini editor. If you’re tempted to find and edit the correct
php.ini in the file system on your own… good luck.