PDFTk适用于本地但不在私有服务器上工作

时间:2017-04-03 15:01:45

标签: php pdf ssh pdftk

我有私人服务器CentOS 6,我已经安装了pdftk程序来生成pdf文件。当我连接SSH客户端时,我可以成功运行pdftk程序。但我无法php使用exec()功能。

我有一个非常简单的php文件,如下所示。这只是为了测试pdftk是否正常工作。当我使用xampp在我的localhost上运行此文件时,它会生成该文件,但是当我尝试使用我的私有服务器时,不会出错并且不会生成文件。我不是专家,期待你的任何帮助。提前谢谢。

PHP代码:

<?php
exec("pdftk form.pdf output private.pdf");

错误如下所示:

Array ( [0] => Error: Failed to open output file:
  [1] => collated.pdf [2] => No output created.) 

注意:我在putty ssh客户端上尝试过这个代码,效果很好。

1 个答案:

答案 0 :(得分:1)

  

错误是:数组([0] =&gt;错误:无法打开输出文件:[1] =&gt; collat​​ed.pdf [2] =&gt;没有创建输出。在putty上的相同exec代码工作正常

您可以发现的差异在于运行代码的用户。如果是PuTTY,则从Web访问时,您将以与运行脚本的用户不同的用户身份登录。由于您要创建新文件,因此用户需要对目录的写访问权限。这通常是一个坏主意,允许将该用户写入您的脚本所在的目录,因此最好创建一个新目录(例如export),其中apache用户将有权写入:

mkdir export
chown apache:apache export
chmod 755 export

并修改您的脚本以将文件写入该目录:

exec("pdftk form.pdf output export/private.pdf");