Using Macports is easy to setup a MAMP environment with all the custom PHP extensions you may need.

This is what I did to have a dev environment, running on MacOS Catalina:

Install apache and php

❯ sudo port install php74 php74-xdebug php74-apache2handler php74-mysql php74-sqlite php74-mcrypt php74-mbstring php74-openssl

Activate mod_php

❯ cd /opt/local/lib/apache2/modules
❯ sudo /opt/local/bin/apxs -a -e -n php7 mod_php74.so

Activate mod_rewrite

LoadModule rewrite_module lib/apache2/modules/mod_rewrite.so

Set a default php.ini

sudo cp /opt/local/etc/php74/php-development.ini /opt/local/etc/php74/php.ini

Change DirectoryIndex in /opt/local/etc/apache2/httpd.conf from:

DirectoryIndex index.html

To:

DirectoryIndex index.php index.html

Uncomment the vhosts file

Include etc/apache2/extra/httpd-vhosts.conf
Include etc/apache2/extra/mod_php74.conf

Create a new vhost in /opt/local/etc/apache2/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerName agilistico.test
    ServerAdmin webmaster@xilonen.lan
    DocumentRoot "/Users/ivan/PhpstormProjects/agilistico.com/public"
    <Directory "/Users/ivan/PhpstormProjects/agilistico.com/public">
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
    </Directory>
    ErrorLog "var/log/apache2/agilistico.test-error_log"
    CustomLog "var/log/apache2/agilistico.test-access_log" common
</VirtualHost>

Restart Apache to reflect the config changes

❯ sudo apachectl restart

And finally add the host to /etc/hosts

❯ sudo echo '127.0.0.1 agilistico.test' > /etc/hosts

Now install MySQL (in my case I need 5.7 at the time, but by default network is off so I can install multiple versions)

❯ sudo port install mysql57-server mysql57
❯ sudo /opt/local/lib/mysql57/bin/mysqld --initialize --user=_mysql
❯ sudo chown -R _mysql:_mysql /opt/local/var/db/mysql57/
❯ sudo chown -R _mysql:_mysql /opt/local/var/run/mysql57/
❯ sudo chown -R _mysql:_mysql /opt/local/var/log/mysql57/

Add mysql_client path to the shell, in my case I’ve added the following to ~/.zshrc

  export PATH=$PATH:/opt/local/lib/mysql57/bin

Create another mysql user, default root has no password:

❯ mysql -uroot

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 24
Server version: 5.7.29 Source distribution

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql >

Then in mysql console


CREATE USER 'ivan'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'ivan'@'%'WITH GRANT OPTION;
CREATE USER 'ivan'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'ivan'@'localhost'WITH GRANT OPTION;
flush privileges; 

Make apache and mysql start at boot:

❯ sudo port load mysql57-server
❯ sudo port load apache2