How to install gmp extension for php 7.2 using MAMP on OSX

Lloyd Keijzer picture Lloyd Keijzer · May 20, 2018 · Viewed 7.1k times · Source

How to install gmp extension for php 7.2.1 using MAMP on OSX?

I'm trying to encrypt a token with php and this library(lcobucci/jwt) using the Elliptic Curve Digital Signature Algorithm (ECDSA) with the P-256 curve and the SHA-256 hash algorithm.

error when running php script:

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Class 'Mdanter\Ecc\EccFactory' not found

I figured that I'm missing the mdanter/ecc dependicy package, so I tried running the following command.

command running:

composer require mdanter/ecc

output:

mdanter/ecc v0.5.0 requires ext-gmp * -> the requested PHP extension gmp is missing from your system

I've tried everything I could find researching this error and related to MAMP. But I couldn't solve this problem. Is there anyone here who has experience in adding the gmp php extension to MAMP specificly and is willing to help me out?

Note: I'm not a very experienced web developer, I mostly create iOS apps and I want to generate a token in php, so I can access the Apple Music Kit API resources.

Answer

georgexsh picture georgexsh · Sep 28, 2018

you have to build the gmp extension from the php source code.

you need Xcode and homebrew, to install compiler toolchain, gmp lib and autoconf:

brew install autoconf gmp

as my MAPP is shipped with php 7.2.8, I would use this php version as example, you could upgrade your MAPP installation or replace version related to 7.2.1. Download and unpack php(7.2.8) source code to a dir, then config the build environment against your php installation and build the extension:

cd ext/gmp
/Applications/MAMP/bin/php/php7.2.8/bin/phpize
./configure --with-php-config=/Applications/MAMP/bin/php/php7.2.8/bin/php-config
make
make install

add the extension loading config to php.ini in /Applications/MAMP/bin/php/php7.2.8/conf:

extension=gmp.so

now this would work:

/Applications/MAMP/bin/php/php7.2.8/bin/php composer.phar require mdanter/ecc