gnupg_init

(PECL gnupg >= 0.4)

gnupg_init初始化连接

描述

gnupg_init(?array $options = null): resource

参数

options

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

配置覆盖
key type description
file_name string 它是实现此协议的可执行程序的文件名,通常是 gpg 可执行文件的路径。
home_dir string 它是配置目录的目录名。它还覆盖了用于相同目的的 GNUPGHOME 环境变量。

返回值

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

变更日志

版本 描述
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 OO gnupg 初始化器示例,使用默认设置

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

示例 #4 OO gnupg 初始化器示例,覆盖了文件名和主目录

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

添加注释

用户贡献的注释 2 条注释

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

当前 FPM/FastCGI/模块用户必须对该目录具有读取权限 - 如果您导入写入权限,则必须具有写入权限。如果某些内容不正确,您不会收到错误消息。
如果没有正确的环境,所有其他 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>";
?>
2
djmaze
2 年前
确保 home_dir 选项字符长度不要太长,否则私钥会失败。

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

命令行测试会产生错误
> gpg: 无法连接到代理:IPC 连接调用失败

执行 `gpg-agent --daemon --homedir /very/long/path/to/.gnupg` 会产生错误。
> '/very/long/path/to/.gnupg/S.gpg-agent.extra' 的套接字名称太长

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