2024 年 PHP 日本大会

gnupg_init

(PECL gnupg >= 0.4)

gnupg_init初始化连接

描述

gnupg_init(?array $options = null): resource

参数

options

必须是关联数组。它用于更改加密引擎的默认配置。

配置覆盖
类型 描述
file_name 字符串 它是实现此协议的可执行程序的文件名,通常是 gpg 可执行文件的路径。
home_dir 字符串 它是配置文件目录的目录名。它还会覆盖用于相同目的的 GNUPGHOME 环境变量。

返回值

其他 GnuPG 函数使用的 GnuPG resource 连接。

变更日志

版本 描述
PECL gnupg 1.5.0 添加了 options 参数。

示例

示例 #1 使用默认设置的过程式 gnupg_init() 示例

<?php
$res
= gnupg_init();
?>

示例 #2 使用覆盖的文件名和主目录的过程式 gnupg_init() 示例

<?php
$res
= gnupg_init(["file_name" => "/usr/bin/gpg2", "home_dir" => "/var/www/.gnupg"]);
?>

示例 #3 使用默认设置的面向对象的 gnupg 初始化器示例

<?php
$gpg
= new gnupg();
?>

示例 #4 使用覆盖的文件名和主目录的面向对象的 gnupg 初始化器示例

<?php
$gpg
= new gnupg(["file_name" => "/usr/bin/gpg2", "home_dir" => "/var/www/.gnupg"]);
?>

添加注释

用户贡献的注释 2 条注释

der_axel at gmx dot de
7 年前
在调用 gnupg_init() 之前,设置正确的 GNUPG 环境!

当前的 FPM/FastCGI/Module 用户必须具有读取权限(如果导入则为写入权限)才能访问该目录。如果某些设置不正确,您不会收到错误消息。
如果没有正确的环境,所有其他 gnupg 函数将无法按预期工作。

<?php
// 输入您的 .gnupg 环境
putenv('GNUPGHOME=/var/www/vhosts/yourdomain/.gnupg');
error_reporting(E_ALL);
$res = gnupg_init();
gnupg_seterrormode($res,GNUPG_ERROR_WARNING);
$info = gnupg_keyinfo($res, 'your-key-id');
echo
"Key - Info<pre>";
var_dump($info);
echo
"</pre>";
?>
djmaze
2 年前
确保 home_dir 选项字符数不要太多,否则私钥会失效。

您会注意到函数执行时间很长(几秒钟)。

命令行测试产生错误
> gpg: can't connect to the agent: IPC connect call failed

执行 `gpg-agent --daemon --homedir /very/long/path/to/.gnupg` 给出了错误。
> socket name for '/very/long/path/to/.gnupg/S.gpg-agent.extra' is too long

因此,您必须检查 home_dir + '/S.gpg-agent.extra' 是否
* 在 Linux 上 < 107 个字符
* 在 BSD 4.4 上 < 104 个字符
To Top