O Apache não quer carregar o GnuPG PHP

1

Eu perguntei isso em SO, mas talvez aqui seja mais adequado perguntar. Estou instalado o GnuPG via Pecl. Gere chaves de pub / priv etc. Eu tenho em php.ini

extension=gnupg.so

Quando tento executar um código simples, tenho um erro gnupg_init () indefinido, que, segundo entendo, significa que o módulo não está carregado.

Fatal error: Uncaught Error: Call to undefined function gnupg_init() 

Este é o código que eu estou tentando executar

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;

O sistema é o ubuntu + apache. Aqui estão as permissões do .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

Aqui está meu / 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

Eu também tenho confirmação que está instalada e carregada

$ php --info | grep gnupg
gnupg
gnupg support => enabled
    
por S.I. 16.08.2016 / 16:33

1 resposta

1

Pode depender de qual repositório você usa e pacotes estão disponíveis. Como observado no meu comentário, quando você executa o phpinfo (); dentro de um script php e carregá-lo do seu navegador, você verá que o mod_php não está carregando a extensão gnupg.

Nos meus servidores CentOS, usamos o Remi repos para PHP. Ele tem um pacote chamado php-pecl-gnupg. Quando eu o instalo, ele instala os objetos compartilhados necessários para o mod_php e posso confirmar que ele está disponível para o meu código da web.

Então nós vimos que a linha de comando php e mod_php no apache não carregam as mesmas configurações, então fazer php --info não necessariamente mostra com o que o mod_php no Apache está configurado. Procure em seu arquivo phpinfo () e veja de qual arquivo de configuração ele está lendo (mostrado nas primeiras linhas). Em seguida, verifique se você tem extension=gnupg.so nesse arquivo de configuração e verifique se está procurando no mesmo diretório da extensão.

    
por 16.08.2016 / 16:57