PHP Gnupg не отображается как расширение в phpinfo(), и я не могу использовать его в php

У меня установлены gnupg и gpgme с помощью homebrew. Я также связал оба и убедился, что они установлены и связаны, запустив brew gnupg install и brew gpgme install и получил сообщение, подтверждающее установку и версию.

Я поместил файл gnupg.so в путь расширения, а также добавил extension=gnupg.so в файл php.ini.

Я получил путь расширения и конкретный путь php.ini со страницы infophp. После перезапуска mamp я по-прежнему не вижу gnupg или gpgme в качестве расширений в phpinfo, и я не могу использовать gnupg в своем php-коде.
Использование $gpg = new \gnupg(); дает мне ошибку, говорящую о том, что класс gnupg не существует.

[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'gnupg' not found

Я попробовал другой подход: я также вручную загрузил gnupg и gpgme с их веб-сайта, извлек их после

./настроить,

делать,

судо сделать установить,

и смог снова успешно установить, также убедился, что gnupg.so находится на том же пути, который отображается на странице phpinfo для пути расширения, а также добавил extension=gnupg.so к тому же php.ini, который отображается на странице phpinfo (я добавил расширение = gnupg.so сразу после всех остальных расширений в файле php.ini)

Я использую:

mac os высокая сьерра 10.13.3

PHP 7.1.12

карта 4.4.1

gnupg 2.2.5 (я пробовал эту версию с установкой brew)

gnupg 1.4.0 (пробовал эту версию, скачав с gnupg.org)

gpgme 1.10.0

Я также хотел бы знать, после устранения вышеупомянутых проблем, нужно ли мне что-либо включать в мой php-файл, чтобы использовать gnupg?

в чем разница между gnupg и gpgme? мне нужно и то, и другое, чтобы зашифровать файл в php?

если я не смог это исправить, какой другой способ зашифровать xml-файлы или файлы, содержащие текстовые данные? Мне нужно зашифровать файл и FTP на другой сервер и расшифровать его там.

Всем заранее спасибо за помощь


person Bahman.A    schedule 24.02.2018    source источник
comment
Откуда вы взяли gnupg.so, который вы вставили в путь расширения?   -  person    schedule 02.03.2018
comment
извините, я не помню, откуда именно я это взял, но я думаю, что после запуска ./config && make && sudo make install gnupg.so создается в какой-то папке, а затем я помню, что должен был скопировать его в расширение папка. Кстати, у меня есть три разные версии PHP на моем Mac, и я обязательно добавил gnupg.so во все их папки расширений, а также php.ini(s), которые отображаются на информационной странице при запуске каждой версии.   -  person Bahman.A    schedule 02.03.2018


Ответы (1)


Я смог решить эту проблему, используя Pecl для установки GnuPG. Эта ссылка мне тоже очень помогла.

Для установки библиотеки выполните следующее:

  1. sudo apt-get -y install gcc make autoconf libc-dev pkg-config
  2. sudo apt-get -y установить libgpgme11-dev
  3. sudo pecl установить gnupg
  4. Перезапустите сервер с помощью: «service apache2 restart» или «sudo service phpX.Y-fpm-sp restart», где x.y — основная.минорная версия вашего php. Примечание: существует несколько различных способов перезапустить систему, чтобы изменения вступили в силу, поэтому, пожалуйста, изучите, как это сделать, в зависимости от сервера и вашей версии php.
  5. As I've explained in my question, try to find the right php.ini file to add the "extension=gnupg.so" into. most common places you'll find your php.ini are:
    • /etc/php/7.2/apache2 (you can use your PHP version instead of 7.2)
    • /etc/php/7.2/cli (вы можете использовать свою версию PHP вместо 7.2)

      Лучший способ — узнать путь php.ini, по которому загружаются расширения, из phpinfo()

Теперь убедитесь, что все прошло хорошо, с помощью следующей команды:

  • "php -i | grep -i gnup"

Если все работает так, как ожидалось, вы увидите что-то вроде этого:

  • /etc/php7.0-sp/conf.d/gnupg.ini,
    gnupg
    поддержка gnupg => включена
person Bahman.A    schedule 30.09.2019