最终目标:在我的 Mediawiki 扩展中使用 PHP GnuPG 库
我已经安装
- 具有依赖项的 gpgme
- 运行 pecl install gnupg = 无错误
- 将 extension=gnupg.so 添加到我的 php.ini
:
[root@dev-lamp01]# locate gnupg.so
/usr/lib64/php/modules/gnupg.so
[root@dev-lamp01]# file /usr/lib64/php/modules/gnupg.so
/usr/lib64/php/modules/gnupg.so: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped
[root@dev-lamp01]# locate libgpgme.so.11
/usr/local/lib/libgpgme.so.11
/usr/local/lib/libgpgme.so.11.8.1
[root@dev-lamp01]# file /usr/local/lib/libgpgme.so.11
/usr/local/lib/libgpgme.so.11: symbolic link to `libgpgme.so.11.8.1'
[root@dev-lamp01]# file /usr/local/lib/libgpgme.so.11.8.1
/usr/local/lib/libgpgme.so.11.8.1: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped
然而:
PHP 警告:PHP 启动:无法加载动态库“/usr/lib64/php/modules/gnupg.so”-libgpgme.so.11:无法打开共享对象文件:第 0 行未知中没有该文件或目录
我遗漏了什么?谢谢
答案1
解决我的问题的解决方案:
$ php -r 'var_dump(function_exists("gnupg_decrypt"));';
PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/gnupg.so' - **libgpgme.so.11: cannot open shared object file**: No such file or directory in Unknown on line 0
bool(false)
$ ldd /usr/lib/php5/20100525/gnupg.so
linux-vdso.so.1 => (0x00007fff715ff000)
**libgpgme.so.11 => not found**
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f087c815000)
/lib64/ld-linux-x86-64.so.2 (0x00007f087cdea000)
看来服务器没有从/usr/local/lib
文件夹加载库。要解决此问题,只需添加/usr/local/lib
到/etc/ld.so.conf
或/并运行ldconfig
。