我已经问过这个,但也许在这里更适合问。 我通过Pecl安装了GnuPG。 生成酒吧/私人密钥等..我有在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服务器上,我们使用PHP的Remi repos。 他有一个名为php-pecl-gnupg的包。 当我安装它时,它会为mod_php安装必要的共享对象,我可以确认它可用于我的网页代码。
所以我们已经看到apache中的命令行php和mod_php没有加载相同的configuration,所以php --info并不一定告诉你Apache中configuration了什么mod_php。 查看你的phpinfo()文件,看看它正在读取哪个configuration文件(它显示在前几行)。 然后确保在该configuration文件中有extension=gnupg.so ,并确保它在扩展名的同一目录中查找。