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应该创build该输出文件!

如果我把sudo作为命令的前面,不会有错误发生。 但是我正在给tmp文件夹写信,而且我认为这是可写的。

我从PHP的exec命令运行PDFTK。 为了100%确定这不是权限问题,我将/tmp文件夹的所有者和组作为www-data ,这是apache用户,但引发了相同的错误。

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

你不应该摆弄/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 

根据进一步的调查,我怀疑现在我们得到了/tmppdftk失败的原因是输出文件已经存在,但是不能被应用程序写入。 (通过评论等待更新。)

你有selinux启用? 请看这个前面的问题和答案 。

在您对SELinux / AppArmor的相关评论不相关之后,我正在编辑此内容。 如果我是你, 而且这是一个长镜头 ,我会看看你用于/ tmp的文件系统。 如果它不是tmpfs,并且已经接近完成,则可能遇到类似于所描述的问题。 正如你可能知道的那样,一旦文件系统接近完整,它只允许root写入。

再次,希望它有帮助!