Я спросил об этом в SO, но, может быть, здесь более уместно спросить. Я установил GnuPG через Pecl. Сгенерируйте ключи pub / priv и т. Д. У меня есть php.ini
extension=gnupg.so
Когда я пытаюсь запустить простой код, у меня возникает неопределенная ошибка gnupg_init (), которая, как я понимаю, означает, что модуль не загружен.
Fatal error: Uncaught Error: Call to undefined function gnupg_init()
Это код, который я пытаюсь запустить
putenv('GNUPGHOME=/home/stan/.gnupg');
$res = gnupg_init();
gnupg_seterrormode($res,GNUPG_ERROR_WARNING);
gnupg_addencryptkey($res,"myfingerprint");
$enc = gnupg_encrypt($res, "just a test");
echo $enc;
Система ubuntu + apache. Вот разрешения .gnupg/
srwxrwxr-x 1 stan stan 0 Aug 16 08:12 S.gpg-agent
-rw------- 1 stan stan 32 Aug 16 10:02 pubring.kbx~
drwx------ 2 stan stan 4096 Aug 16 10:04 private-keys-v1.d
-rw-rw-r-- 1 stan stan 1361 Aug 16 10:04 pubring.kbx
drwx------ 2 stan stan 4096 Aug 16 10:04 openpgp-revocs.d
-rw------- 1 stan stan 2603 Aug 16 10:19 secring.gpg
-rw------- 1 stan stan 1209 Aug 16 10:19 pubring.gpg~
-rw------- 1 stan stan 1360 Aug 16 10:19 trustdb.gpg
-rw------- 1 stan stan 600 Aug 16 10:19 random_seed
-rw------- 1 stan stan 1209 Aug 16 10:19 pubring.gpg
Вот мой / var / www /
drwxrwsr-x 3 stan www-data 4096 Jul 14 11:23 www
drwxr-sr-x 7 stan www-data 4096 Aug 16 09:59 html
У меня также есть подтверждение, что установлено и загружено
$ php --info | grep gnupg
gnupg
gnupg support => enabled
Это может зависеть от того, какой репозиторий вы используете и какие пакеты доступны. Как отмечалось в моем комментарии, когда вы запускаете phpinfo (); внутри php-скрипта и загрузите его из своего браузера, вы увидите, что mod_php не загружает расширение gnupg.
На моих серверах CentOS мы используем репозитории Remi для PHP. У него есть пакет под названием php-pecl-gnupg. Когда я его устанавливаю, он устанавливает необходимые общие объекты для mod_php, и я могу подтвердить, что он доступен для моего веб-кода.
Итак, мы видели, что командная строка php и mod_php в apache не загружает одни и те же конфигурации, поэтому php --info
не обязательно показывает, с чем настроен mod_php в Apache. Загляните в свой файл phpinfo () и посмотрите, из какого файла конфигурации он читает (он отображается в первых нескольких строках). Тогда убедитесь, что у вас есть extension=gnupg.so
в этом конфигурационном файле и убедитесь, что он ищет расширение в том же каталоге.