当前位置: 首页 > 知识库问答 >
问题:

在MAC/MAMP 10.8.4上使用PECL安装PHP gnupg

阳俊德
2023-03-14

我试图使用PECL在mac上安装gnupg。

sudopecl安装gnupg

downloading gnupg-1.3.3.tgz ...
Starting to download gnupg-1.3.3.tgz (19,141 bytes)
......done: 19,141 bytes
5 source files, building
WARNING: php_bin /Applications/MAMP/bin/php/php5.5.3/bin/php appears to have a suffix /php5.5.3/bin/php, but config variable php_suffix does not match
running: phpize
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
building in /private/tmp/pear/install/pear-build-rootj1cVj1/gnupg-1.3.3
running: /private/tmp/pear/install/gnupg/configure
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for a sed that does not truncate output... /opt/local/bin/gsed
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking whether cc understands -c and -o together... yes
checking for system library directory... lib
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... x86_64-apple-darwin12.4.0
checking host system type... x86_64-apple-darwin12.4.0
checking target system type... x86_64-apple-darwin12.4.0
checking for PHP prefix... /Applications/MAMP/bin/php/php5.5.3
checking for PHP includes... -I/Applications/MAMP/bin/php/php5.5.3/include/php -I/Applications/MAMP/bin/php/php5.5.3/include/php/main -I/Applications/MAMP/bin/php/php5.5.3/include/php/TSRM -I/Applications/MAMP/bin/php/php5.5.3/include/php/Zend -I/Applications/MAMP/bin/php/php5.5.3/include/php/ext -I/Applications/MAMP/bin/php/php5.5.3/include/php/ext/date/lib
checking for PHP extension directory... /Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212
checking for PHP installed headers prefix... /Applications/MAMP/bin/php/php5.5.3/include/php
checking if debug is enabled... no
checking if zts is enabled... no
checking for re2c... no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
checking for gawk... gawk
checking for gnupg support... yes, shared
checking for gnupg files in default path... not found
configure: error: Please reinstall the gpgme distribution
ERROR: `/private/tmp/pear/install/gnupg/configure' failed

我已经把问题缩小到安装gpgme,但是我找不到正确的方法。

共有2个答案

姬昊焱
2023-03-14

请记住,这是从源代码构建的,所以您需要gpgme头来编译扩展。因此,寻找该包的开发版本:在Linux,我遇到了同样的问题:gpgme-devel

岳卓君
2023-03-14

我在使用PHP 5.4.24、Mac OSX 10.9.3时也遇到了同样的问题。我必须采取以下步骤来使用PECL安装gnupg(v1.3.3)。

首先,我使用自制软件安装了软件包gnupggpgme。自制软件在/usr/local中安装软件包。这是因为gnupg PECL模块搜索以下位置/usr/local/include/usr/include/usr/local/include/gpgme//usr/include/gpgme/,以检测gpgpgpme安装

其次,我尝试使用PECL安装gnupgp:

pecl install gnupg

在编写时,PECL模块的代码包含两条语句,这两条语句会阻止模块被正确编译和链接。这导致了以下错误:

...compile statements...
cc ${wl}-flat_namespace ${wl}-undefined ${wl}suppress -o .libs/gnupg.so -bundle  .libs/gnupg.o .libs/gnupg_keylistiterator.o  -L/usr/local/include/lib -lgpgme  -Wl,-rpath -Wl,/usr/local/include/lib
ld: warning: directory not found for option '-L/usr/local/include/lib'
duplicate symbol _gnupg_keylistiterator_class_entry in:
    .libs/gnupg.o
    .libs/gnupg_keylistiterator.o
duplicate symbol _gnupg_class_entry in:
    .libs/gnupg.o
    .libs/gnupg_keylistiterator.o
ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [gnupg.la] Error 1  

第三,我必须根据Jim Jagielski的补丁手工编辑和安装PECL模块来解决这个错误。以下是我完成的步骤:

>

  • 下载gnupg-pepl模块:

    pecl download gnupg
    

    打开gnupg pecl模块的包装:

    tar xvf gnupg-1.3.3.tgz
    

    更改目录:

    cd gnupg-1.3.3
    

    修改php\u gnupg。h通过更改第49行:

    zend_class_条目*gnupg_class_条目 进入静态zend_类_条目*gnupg_类_条目

    修改php_gnupg_keylistiterator. h通过更改第44行:

    zend_class_条目*gnupg_keylistiterator_class_条目进入静态zend_类_项*gnupg_keylistiterator_类_项

    gnupg-1.4中不需要步骤4和5。0或更大。

    准备要编译的PHP模块,运行:

    phpize
    

    配置模块:

    ./configure
    

    构建模块:

    make
    

    安装模块:

    make install 
    

    编译后,模块安装在/Users/USERNAME/tmp/pear/install/gnupg-1.3中。3/模块。因为PHP共享扩展安装在/usr/lib/PHP/extensions/no-debug-non-zts-20100525/中,所以我复制了模块:

     cp /Users/USERNAME/tmp/pear/install/gnupg-1.3.3/modules/gnupg.so /usr/lib/php/extensions/no-debug-non-zts-20100525/
    

    将扩展添加到PHP。因此打开/etc/php。ini并添加以下行:

     [gnupg]
     extension=gnupg.so
    

    通过执行以下行测试扩展:

     php -r "print_r(new gnupg());"
    

  •  类似资料:
    • 我正在运行OS 10.9的Mac上使用MAMP版本3。2.我安装了Wordpress并创建了一个网站。一切正常,我想用MAMP创建另一个站点。我做到了,效果很好。但是当我访问原始站点时,仪表板没有显示。在MAMP中,当我在site2(第二个站点)时,原始站点没有出现在列表中。我进入MAMP并确保Apache链接到我的原始站点。数据库仍然存在。请帮忙。 戴夫

    • 我是新的MacOS。我已经成功安装了MAMP cakephp/cakephp3.0。x-dev需要ext-intl*-

    • 问题内容: 如何在mac上安装libicu dev。这是网站上推荐的说明 文档 http://polyglot.readthedocs.org/en/latest/Installation.html I am using anaconda but it seems to always throw up an error 问题答案: 我刚让PyICU安装在OSX上,因为同样的原因它失败了 错误。以下

    • 问题内容: 如何在Mac上安装libicu-dev。这是文档上推荐的说明 http://polyglot.readthedocs.org/en/latest/Installation.html 我正在使用水蟒,但似乎总是抛出 错误 问题答案: 由于相同的错误导致PyICU失败后,我才将其安装在OSX上。这是我的建议: 安装自制软件(OSX的软件包管理器) #安装库;可能已经安装 验证是否存在必需的

    • 本文向大家介绍在Mac OS上安装Python,包括了在Mac OS上安装Python的使用技巧和注意事项,需要的朋友参考一下 Python发行版可用于多种平台。您只需要下载适用于您的平台的二进制代码并安装Python。 如果平台的二进制代码不可用,则需要C编译器来手动编译源代码。在安装所需的功能选择方面,编译源代码可提供更大的灵活性。 最近的Mac装有Python,但可能已经过时了。有关获取当前

    • 试图在Mac上安装Spark和相关程序,但在测试安装时收到错误消息。 /Users/somedirectory/apachespark/spark-2.3.0-bin-hadoop2.7/bin/pyspark/Users/somedirectory/apachespark/spark-2.3.0-bin-hadoop2.7/bin/spark-class:第71行:/Library/Java/J