Я пытаюсь установить 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 вручную, на основе патча Джима Ягелски . Это следующие шаги:
Загрузите модуль gnupg-pecl:
pecl download gnupg
Распакуйте модуль gnupg-pecl:
tar xvf gnupg-1.3.3.tgz
Изменить каталог:
cd gnupg-1.3.3
Измените php_gnupg.h
, изменив строку 49:
zend_class_entry *gnupg_class_entry;
в static zend_class_entry *gnupg_class_entry;
Измените php_gnupg_keylistiterator.h
, изменив строку 44:
zend_class_entry *gnupg_keylistiterator_class_entry;
в static zend_class_entry *gnupg_keylistiterator_class_entry;
Подготовьте PHP-модуль для компиляции, выполните:
phpize
Настроить модуль:
./configure
Постройте модуль:
make
Установите модуль:
make install
После компиляции модуль был установлен в /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/
Добавьте расширение к PHP. Поэтому откройте /etc/php.ini
и добавьте следующие строки:
[gnupg] extension=gnupg.so
Проверьте расширение, выполнив следующую строку:
php -r "print_r(new gnupg());"