gpg加密失败:文件打开错误

时间:2011-07-19 03:57:46

标签: php gnupg

我一直很疯狂......

我在我的CentOS服务器上安装了gnupg,我尝试加密上传的文件(通过PHP页面上传)。在服务器上通过命令行,它完美地工作。但是通过php脚本,它失败并出现此错误:

gpg: /path-to-my-file/my-file: encryption failed: file open error

用户apache(我认为用于运行exec命令)在文件目录中具有读/写功能。

文件上传得很好(我之后可以看到它从我的代码中删除了未加密的文件),可以通过php网站正确删除。

我运行的命令是以下

/path-to-gpg/gpg --homedir=/path-to-my-home-gnupg/.gnupg -e -r therecipient@email the-unencrypted-file

知道如何解决这个问题吗? 感谢

2 个答案:

答案 0 :(得分:1)

要检查的一些事项:

  • 运行system("ls " . escapeshellarg($file))并检查结果 - 是否找不到文件?没有权限?这将有助于您调试。
  • 运行system("whoami")以确保PHP按您认为的那样运行。
  • 运行echo "<pre>ls " . escapeshellarg($file) . "</pre>"然后复制+粘贴命令并从shell运行它,以确保文件的路径符合您的预期。

另外,我相信CentOS默认运行SELinux ...如果你安装了它,请检查日志(在/var/log/中)以查看SELinux是否阻止Apache执行GPG。

答案 1 :(得分:0)

尝试以详细模式运行具有实际apache用户权限的命令:

su apache -c /path-to-gpg/gpg -vv ...
相关问题