PDFTk 在本地工作但不在私人服务器上工作

PDFTk works on local but not working on private server

我有私服CentOS 6,安装了pdftk生成pdf文件的程序。当我连接 SSH 客户端时,我可以成功 运行 pdftk 程序。但是我不能在 php 中使用 exec() 函数。

我有一个非常简单的 php 文件,如下所示。这只是为了测试 pdftk 是否正常工作。当我 运行 我的本地主机上的这个文件 xampp 时,它生成文件但是当我在我的私人服务器上尝试时,没有给出错误并且不生成文件。我不是专家,希望得到您的任何帮助。提前致谢。

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 客户端上尝试了这段代码并且运行良好。

The error is: Array ( [0] => Error: Failed to open output file: [1] => collated.pdf [2] => No output created. . same exec code on putty works fine.

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

mkdir export
chown apache:apache export
chmod 755 export

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

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