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


gpg encryption failed: file open error

我已经疯了…

我有gnupg安装在我的CentOS服务器上,我试图加密上传的文件(通过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

你知道我该怎么处理这个吗?由于

检查:

  • 运行system("ls " . escapeshellarg($file))并检查结果-是文件未找到吗?没有权限?这将有助于你调试。
  • 运行system("whoami")以确保PHP正在运行。
  • 运行echo "<pre>ls " . escapeshellarg($file) . "</pre>",然后复制粘贴命令,并从shell中运行它,以确保文件的路径是您期望的。

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

尝试在详细模式下使用实际的apache用户权限运行命令:

su apache -c /path-to-gpg/gpg -vv ...