Установите PHP gnupg с помощью PECL на MAC / MAMP 10.8.4

Я пытаюсь установить gnupg на mac с помощью PECL.

sudo pecl install gnupg

 загрузка gnupg-1.3.3.tgz ...
 Начиная с загрузки gnupg-1.3.3.tgz (19,141 байт)
 ...... сделано: 19,141 байт
 5 исходных файлов, построение
 ПРЕДУПРЕЖДЕНИЕ: php_bin /Applications/MAMP/bin/php/php5.5.3/bin/php похоже, имеет суффикс /php5.5.3/bin/php, но переменная конфигурации php_suffix не соответствует
 running: phpize
 Конфигурирование для:
 PHP Api Версия: 20121113
 Zend Module Api No: 20121212
 Расширение Zend Api No: 220121212
 в /private/tmp/pear/install/pear-build-rootj1cVj1/gnupg-1.3.3
 running: / private / tmp / pear / install / gnupg / configure
 проверка grep, который обрабатывает длинные строки и -e ... / usr / bin / grep
 проверка для egrep ... / usr / bin / grep -E
 проверка для sed, который не усекает вывод ... / opt / local / bin / gsed
 проверка на cc ... cc
 проверить, работает ли компилятор C ... да
 проверка имени файла вывода по умолчанию компилятора C ... a.out
 проверка суффикса исполняемых файлов ...
 проверяем ли мы кросс-компиляцию ... нет
 проверка суффикса объектных файлов ... o
 проверяем, используем ли мы компилятор GNU C ... да
 проверяя, принимает ли cc -g ... да
 проверка для опции cc для принятия ISO C89 ... не требуется
 проверка запуска препроцессора C ... cc -E
 проверка на icc ... no
 проверка на солнечный свет ... нет
 проверяя, понимает ли cc -c и -o вместе ... да
 проверка каталога системной библиотеки ... lib
 проверить, поддерживает ли компилятор -R ... нет
 проверить, поддерживает ли компилятор -Wl, -rpath, ... да
 проверка типа системы сборки ... x86_64-apple-darwin12.4.0
 проверка типа хост-системы ... x86_64-apple-darwin12.4.0
 проверка типа целевой системы ... x86_64-apple-darwin12.4.0
 проверка префикса PHP ... /Applications/MAMP/bin/php/php5.5.3
 проверка на PHP включает в себя ... -I / Applications / MAMP / bin / php / php5.5.3 / include / php -I / Applications / MAMP / bin / php / php5.5.3 / include / php / main -I / Приложения / 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
 проверка каталога расширений PHP ... /Applications/MAMP/bin/php/php5.5.3/lib/php/extensions/no-debug-non-zts-20121212
 проверка префиксов установленных PHP-префиксов ... /Applications/MAMP/bin/php/php5.5.3/include/php
 проверка того, включена ли отладка ... нет
 проверка, если zts включен ... нет
 проверка на re2c ... no
 configure: ВНИМАНИЕ: вам понадобится re2c 0.13.4 или новее, если вы хотите регенерировать парсер PHP.
 проверка на gawk ... gawk
 проверка поддержки gnupg ... да, общий
 проверка файлов gnupg по умолчанию ... не найден
 configure: error: переустановите дистрибутив gpgme
 ERROR: `/ private / tmp / pear / install / gnupg / configure 'не удалось выполнить

Я сузил свою проблему, чтобы установить gpgme, но я не могу найти правильный способ сделать это где угодно.

Я столкнулся с той же проблемой при использовании PHP 5.4.24, Mac OSX 10.9.3. Я должен был предпринять следующие шаги для установки gnupg (v1.3.3) с помощью PECL.

Во-первых, я установил программные пакеты gnupg и gpgme с помощью homebrew . Homebrew устанавливает ваши пакеты в /usr/local . Это импорт, потому что модуль gnupg PECL ищет следующие местоположения /usr/local/include /usr/include /usr/local/include/gpgme/ /usr/include/gpgme/ для обнаружения установки gpgpme .

Во-вторых, я попытался установить gnupgp с помощью PECL:

 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 

В-третьих, мне пришлось разрешить эту ошибку, отредактировав и установив модуль PECL вручную, на основе патча Джима Ягелски . Это следующие шаги:

  1. Загрузите модуль gnupg-pecl:

     pecl download gnupg 
  2. Распакуйте модуль gnupg-pecl:

     tar xvf gnupg-1.3.3.tgz 
  3. Изменить каталог:

     cd gnupg-1.3.3 
  4. Измените php_gnupg.h , изменив строку 49:

    zend_class_entry *gnupg_class_entry; в static zend_class_entry *gnupg_class_entry;

  5. Измените php_gnupg_keylistiterator.h , изменив строку 44:

    zend_class_entry *gnupg_keylistiterator_class_entry; в static zend_class_entry *gnupg_keylistiterator_class_entry;

  6. Подготовьте PHP-модуль для компиляции, выполните:

     phpize 
  7. Настроить модуль:

     ./configure 
  8. Постройте модуль:

     make 
  9. Установите модуль:

     make install 
  10. После компиляции модуль был установлен в /Users/USERNAME/tmp/pear/install/gnupg-1.3.3/module . Поскольку общие расширения 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/ 
  11. Добавьте расширение к PHP. Поэтому откройте /etc/php.ini и добавьте следующие строки:

      [gnupg] extension=gnupg.so 
  12. Проверьте расширение, выполнив следующую строку:

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