【发布时间】:2021-09-17 22:15:29
【问题描述】:
我已经查看了其他几个问题,例如 this one、this 或 this 等指南,但我仍然没有运气。
这是我到目前为止所做的:
- 使用
brew install autoconf gmpbrew 下载gmp - 从源下载 PHP(我使用的是 7.3.24 版本)
- 已将 Gmp 目录复制到
/Applications/MAMP/bin/php/php7.3.24/include/php/ext - 进入该目录并启动
phpize - 上线
./configure --with-php-config=/Applications/MAMP/bin/php/php7.3.24/bin/php-config - 上线
make - 上线
make install
到目前为止,一切都很好。没有错误,一切似乎都很好,但如果我看一下我的 cli php -m(或php -i),则没有加载 gmp 扩展。所以我去了我的 cli php.ini 文件和我的 web php.ini 文件并手动添加了extension=gmp.so(该文件存在于此路径/Applications/MAMP/bin/php/php7.3.24/include/php/ext/gmp/modules/gmp.so)。
我什至尝试指定完整路径,但仍然没有运气。我的 cli 或我的 phpinfo(); 都没有显示启用了 GMP。我在atm有点困惑,不能考虑其他任何事情。
我错过了什么?显然,我重新启动了十几次 MAMP PRO,甚至我的 mac 本身也是如此。
- MacOs 版本:iMac 24' M1 上的 11.4 Big Sur
- MAMP PRO 版本:6.3.1
- 使用的 PHP 版本:7.3.24
21 年 8 月 7 日更新
我更新了 MAMP PRO 并安装了 PHP 版本 7.3.27,所以我重新检查了一遍,从源代码 https://github.com/php/php-src/releases?after=php-8.0.4RC1 下载 php,将 ext/gmp 复制到
/Applications/MAMP/bin/php/php7.3.27/include/php/ext,推出/Applications/MAMP/bin/php/php7.3.27/bin/phpize、./configure --with-php-config=/Applications/MAMP/bin/php/php7.3.27/bin/php-config、make 和make install。没有错误。
make install 的输出是:
Installing shared extensions: /Applications/MAMP/bin/php/php7.3.27/lib/php/extensions/no-debug-non-zts-20180731/
Installing header files: /Applications/MAMP/bin/php/php7.3.27/include/php/
shtool:install:Warning: source and destination are the same - skipped
我通过 MAMP 接口、文件、编辑模板 -> php -> php7.3.27 将 extension=gmp.so 添加到 php.ini。重新启动 MAMP,phpinfo() 上没有任何新内容;
12/07/21 更新
根据 Hakre 的要求,我在 cli 中运行了以下命令,结果如下:
[~]$ php -n -d extension=gmp.so -i
PHP Warning: PHP Startup: Unable to load dynamic library 'gmp.so' (tried: /Applications/MAMP/bin/php/php7.3.27/lib/php/extensions/no-debug-non-zts-20180731/gmp.so (dlopen(/Applications/MAMP/bin/php/php7.3.27/lib/php/extensions/no-debug-non-zts-20180731/gmp.so, 9): no suitable image found. Did find:
/Applications/MAMP/bin/php/php7.3.27/lib/php/extensions/no-debug-non-zts-20180731/gmp.so: mach-o, but wrong architecture
/Applications/MAMP/bin/php/php7.3.27/lib/php/extensions/no-debug-non-zts-20180731/gmp.so: mach-o, but wrong architecture), /Applications/MAMP/bin/php/php7.3.27/lib/php/extensions/no-debug-non-zts-20180731/gmp.so.so (dlopen(/Applications/MAMP/bin/php/php7.3.27/lib/php/extensions/no-debug-non-zts-20180731/gmp.so.so, 9): image not found)) in Unknown on line 0
phpinfo()
PHP Version => 7.3.27
对于猛禽:
这是您询问的命令的输出。
[~]$ which php
/Applications/MAMP/bin/php/php7.3.27/bin/php
[~]$ php --ini | grep "Loaded Configuration File"
Loaded Configuration File: /Applications/MAMP/bin/php/php7.3.27/conf/php.ini
[~]$ php --version
PHP 7.3.27 (cli) (built: Mar 16 2021 12:04:51) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.27, Copyright (c) 1998-2018 Zend Technologies
[~]$
Ofc 安装了多个 php,因为 MAMP 单独用 4-5 版本填充它 + 有一个来自 MacOSx 的默认版本,我已经用 .zshrc bash 配置文件覆盖了
export PATH=/Applications/MAMP/bin/php/php7.3.27/bin:$PATH
那行来自我的 .zshrc
问题可能与新的 M1 芯片有关吗?我使用的是 2021 年 6 月底刚买的新 iMac。 也许is this 相关?
对于哈里达山:
让我开始说我尝试使用没有附加参数的 .configure,然后我尝试使用 CC="gcc -arch i386" CXX="g++ -arch i386" 甚至使用 CC="gcc -arch arm64" CXX="g++ -arch arm64"(我在 configure.log 中找到了 arm64)。如果我没有错过命令行中的任何其他信息,他们都没有产生有效的.so。 关于你让我做的测试,结果如下:
[~]$ file /Applications/MAMP/bin/php/php7.3.27/bin/php
/Applications/MAMP/bin/php/php7.3.27/bin/php: Mach-O 64-bit executable x86_64
【问题讨论】:
-
您是否尝试过使用
phpcli 并且只加载扩展名(空白,-n)?php -n -d extension=gmp.so -i?如果加载 .so 文件时出现问题,它将显示在标准错误中。此外,它可能有助于验证从磁盘加载的确切文件的命令)。 -
该命令是 php 并且
-n开关告诉 php 不加载任何 .ini 文件 - 这对于简单的故障排除来说是一个空白。然后是-d的配置参数,接下来是extension=gmp.so,它告诉php 加载您遇到问题的扩展。然后-i显示配置,你已经知道那个开关了。 -
不确定是否必须使用 MAMP PRO,但 Homebrew 也有 PHP。如果您使用 Homebrew PHP 版本,您可以使用 PECL 轻松安装扩展。
-
现在我在输出中看起来更好,它说“/Applications/MAMP/bin/php/php7.3.27/lib/php/extensions/no-debug-non-zts-20180731/gmp.所以:mach-o,但架构错误”所以该文件一定有问题。我有一台带有 M1 芯片的新 iMac。可能是这个原因吗?
-
无论您使用的是 MAMP Pro 附带的 php 还是从源代码编译 php,您只需要确保 php 将使用的每个库都必须具有相同的架构和当您从源代码编译库时,架构可能会有所不同,当发生这种情况时,我们需要传递编译器标志以强制编译器针对特定架构构建库
标签: php macos php-extension gmp mamp-pro