AWS apache2环境PHP调用gnupg_init()报未定义函数解决方案求助
解决PHP调用
gnupg_init()报未定义函数错误完整操作步骤 以下操作适用于AWS EC2默认的Debian/Ubuntu系统环境,若使用RHEL/CentOS系系统,将文中apt命令替换为yum,依赖包libgpgme11-dev替换为gpgme-devel即可。
步骤1:安装系统底层依赖
- 更新软件包索引:
sudo apt update && sudo apt upgrade -y - 安装gnupg底层库、PHP编译所需依赖:
sudo apt install -y gnupg libgpgme11-dev build-essential php-dev php-pear
步骤2:安装PHP gnupg扩展
执行PECL命令安装官方扩展,安装过程中若提示参数选择,直接回车使用默认值即可:sudo pecl install gnupg
步骤3:配置PHP加载扩展
请将下文{PHP_VERSION}替换为你服务器实际安装的PHP版本,可通过php -v命令查询,例如8.1、7.4
- Apache2运行的PHP与CLI命令行PHP使用独立的配置文件,需分别修改:
- 编辑Apache2对应的php.ini:
sudo nano /etc/php/{PHP_VERSION}/apache2/php.ini - 搜索
Dynamic Extensions段落,在段落末尾新增一行:extension=gnupg.so - 保存退出后,编辑CLI对应的php.ini,同样添加上述配置:
sudo nano /etc/php/{PHP_VERSION}/cli/php.ini
- 编辑Apache2对应的php.ini:
步骤4:重启服务使配置生效
- 重启Apache2服务:
sudo systemctl restart apache2 - 若使用PHP-FPM模式,额外重启对应版本的PHP-FPM服务:
sudo systemctl restart php{PHP_VERSION}-fpm
步骤5:验证安装结果
- CLI端验证:执行
php -m | grep gnupg,输出gnupg即代表命令行端扩展加载成功 - Web端验证:新建测试PHP文件写入
<?php phpinfo(); ?>,通过浏览器访问后搜索gnupg项,存在即代表Apache端扩展加载成功 - 验证通过后,
$res = gnupg_init();代码即可正常运行
内容的提问来源于stack exchange,提问作者Ronak Solanki
相关产品推荐
相关产品推荐

