【问题标题】:GPG key import through PHP not working (works in shell)通过 PHP 导入 GPG 密钥不起作用(在 shell 中工作)
【发布时间】:2010-01-07 10:35:41
【问题描述】:

我必须在 PHP 脚本中导入 GPG 密钥,它使用命令行工作

gpg --import "/home/me/pubkey.txt"

但使用带有import 方法的PHP gpg 类即使使用gnupg_import 函数也不起作用。

我的配置是:

  • 红帽企业 Linux 5
  • PHP 5.1.6
  • GnuPG 1.4.5
  • GPGme 1.1.8
  • GPG 扩展 1.3.1

我也尝试使用 PHP 的 exec 或 system 函数,但没有成功,使用相同的命令行(exec('cat "/home/me/pubkey.txt"') 有效,因此文件可读)。

编辑: 它适用于带有 GnuPG 1.4.9、PHP 5.2.6 的 Ubuntu 9.10 服务器。

【问题讨论】:

  • 问题是gnupg_geterror()没有给出错误信息。没有 PHP 警告,什么都没有。
  • 您是否尝试过 exec 和 system 使用可选的参考参数,以及 print_r 它们的值? gpg 是否在 safe_mode_exec_dir 中可执行?例如。在我的 Ubuntu 上,猫在 /bin/ 中,而 gpg 在 /usr/bin/ 中,请参阅 us.php.net/manual/en/function.exec.php 的注释
  • $output 为空数组,$return_var 为“2”,因此“意外错误”。服务器上的安全模式已关闭。

标签: php shell exec gnupg


【解决方案1】:

知道了! 我是遇到问题的人,Fabien 在 SO 上发布了这个问题。

这是一个文件权限问题:它试图写入 /root(HOME 环境变量)上的 .gnupg 文件,但 PHP 无法写入。

我们必须更改此文件的权限,以便 PHP 可以在其中写入,或者将其移动到 PHP 可写入的目录。

什么是最好的解决方案?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多