PDFTK:无法打开文件进行输出

PDFTK:无法打开文件进行输出

我正在使用 PDFTK 为 PDF 文件添加水印,使用以下命令:

pdftk /tmp/55180af7c8c88.pdf stamp /tmp/stamp55180af7c95b84.58412952.pdf output /tmp/55180af7c95c81.06110501.pdf

然而,上述结果是:

Error: Failed to open output file:
   /tmp/55180af7c95c81.06110501.pdf
   No output created.
Error: unable to open file for output: /tmp/55180af7c95c81.06110501.pdf

上述是一个奇怪的错误,因为 PDFTK 应该创建该输出文件!

如果我把sudo命令放在前面,就不会抛出错误。但我正在写入 tmp 文件夹,而这一切都是可写的,我以为呢?

我正在从 PHPexec命令运行 PDFTK。为了 100% 确保这不是权限问题,我将/tmp文件夹所有者和组设为www-data,即 apache 用户,但抛出了相同的错误。

我现在不知道发生了什么,我感谢任何帮助!

答案1

您不应该摆弄 的权限/tmp。它是系统的重要组成部分。我怀疑您的pdftk命令失败的原因是/tmp设置不正确。要恢复 的权限,请tmp以 root 身份运行以下命令:

chown root:root /tmp
chmod 1777 /tmp

结果将留下/tmp如下所示的权限和所有者/组:

ls -ld /tmp
drwxrwxrwt 6 root root 12288 Mar 29 18:05 /tmp

根据进一步的调查,我怀疑现在我们已经/tmp理清了,失败的原因pdftk是输出文件已经存在但应用程序无法写入。(等待通过评论更新。)

答案2

您是否已启用 selinux?请查看先前的这个问题和答案, 请。

在您善意评论 SELinux/AppArmor 不相关之后,我正在编辑此内容。如果我是您,这是一个长远的目标,我会查看您用于 /tmp 的文件系统。如果它不是 tmpfs 并且快要满了,您可能会遇到与您描述的问题类似的问题。您可能知道,一旦文件系统快要满了,它只允许 root 在其上写入。

再次希望它能有所帮助!

相关内容