如何在OSX上使用MAMP为PHP 7.2安装gmp扩展

20
如何在OSX上使用MAMP安装适用于php 7.2.1的gmp扩展?
我正在尝试使用P-256曲线和SHA-256哈希算法,以及Elliptic Curve Digital Signature Algorithm(ECDSA)和这个库(lcobucci/jwt)加密一个令牌。 运行php脚本时出现错误:
Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Class 'Mdanter\Ecc\EccFactory' not found

我发现我缺少mdanter/ecc依赖包,所以我尝试运行以下命令。
命令运行:
composer require mdanter/ecc

输出:

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

我已经尝试了所有与MAMP相关的错误研究和解决方法,但我无法解决这个问题。这里是否有任何有经验的人擅长在MAMP中添加gmp php扩展并愿意帮助我? 注意:我不是非常有经验的Web开发人员,我主要创建iOS应用程序,并且想要在php中生成一个令牌,以便可以访问Apple Music Kit API资源。

请问有人有回应吗?我尝试了所有的方法,但是没有一个是最新的... - Thibault Henry
3个回答

21

这是我在2020年所做的。

从源代码https://github.com/php/php-src/releases下载PHP,选择与您的MAMP PHP版本匹配的版本。

复制您想要的扩展。 这里,我们正在复制gmp目录。

将其粘贴到/Applications/MAMP/bin/php/php7.4.1/include/php/ext中(确保移动到您的MAMP php版本目录)。

cd /Applications/MAMP/bin/php/php7.4.1/include/php/ext/gmp

然后运行phpize命令

/Applications/MAMP/bin/php/php7.4.1/bin/phpize

第五步:

./configure --with-php-config=/Applications/MAMP/bin/php/php7.4.1/bin/php-config

它输出以下内容:

然后

make

那么

make install

现在已经安装完成。

您可以通过以下方式进行确认。

/Applications/MAMP/bin/php/php7.4.1/bin/php -i | grep gmp

gmp支持 => 已启用

如果你没有看到已启用的gmp支持,你可能需要将以下内容添加到php.ini文件中。

此命令将向您显示MAMP php使用的php.ini文件

/Applications/MAMP/bin/php/php7.4.1/bin/php -i | grep "php.ini"

添加 extension=gmp.so

重新启动MAMP :)

带有屏幕截图的发布在此处:https://mycodde.blogspot.com/2020/01/install-php-gmp-extension-in-mamp-2020.html


4
在我看来,这应该成为被接受的答案。谢谢,这是唯一一个对我有用的解决方案。 - Stichoza
我写了答案。一年后当我有同样的问题时,它帮了我 :) - abdul rashid

16

你需要从PHP源代码中构建GMP扩展。

你需要Xcode和Homebrew,来安装编译器工具链、GMP库和autoconf

brew install autoconf gmp

由于我的MAPP与php 7.2.8一起发货,所以我将使用此php版本作为示例,您可以升级MAPP安装或更换与7.2.1相关的版本。下载并解压缩php(7.2.8)源代码到一个目录,然后根据您的php安装配置构建环境并构建扩展:

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
在`/Applications/MAMP/bin/php/php7.2.8/conf`文件夹中,将扩展程序的加载配置添加到`php.ini`中:
extension=gmp.so

现在这将会起作用:

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

2
以上的四行命令对我不起作用,我的GMP安装在/usr/local/Cellar/gmp/6.1.2_2,这些命令/Applications/MAMP/bin/php/php7.2.8/bin/phpize ./configure --with-php-config=/Applications/MAMP/bin/php/php7.2.8/bin/php-config也不起作用 :( - Saurabh Mistry
这些命令(路径)是用于MAMP安装,而不是Homebrew。 - georgexsh
@SaurabhMistry - 你需要从描述中的链接(http://php.net/get/php-7.2.8.tar.bz2/from/a/mirror)下载最新版本的7.2.8,并在该新版本的ext/gmp文件夹中运行终端命令。 - Zeth

0
我在运行 configure 命令时遇到了错误 unable to locate gmp.h
为了告诉正确的 gmp 路径,我不得不使用 --with-gmp 标签。
./configure --with-php-config=/Applications/MAMP/bin/php/php7.2.34/bin/php-config --with-gmp=/opt/homebrew/Cellar/gmp/6.2.1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接