2010-11-12 112 views
0

我使用pdftk来连接上飞PDF文件()调用像这样:PDFTK通过EXEC()调用的通过使执行exec失败默默

exec("/path/to/pdftk /path/to/file1.pdf /path/to/file2.pdf cat output path/to/output.pdf", $execoutput); 

这一切都工作得很好在Linux环境中,但是当在我们的开发环境(Windows/Uniform Server和OSX/MAMP混合)本地运行时,这似乎默默无闻。 $ execoutput是一个空数组。

如果发送给exec()的命令复制并粘贴到Windows或OSX的命令行中,它将获得所需的输出并生成连接文件。每台开发人员机器都安装了pdftk,并且可以通过命令行证明其功能完整。

这目前让我难堪。我无法解释为什么会发生这种情况。

回答

5

我终于明白发生了什么事。就像一个noob,我假定每台机器都运行最新版本的pdftk。他们不是。

这样看来,上述问题涉及一种已知的错误将其固定在版本1.43

http://www.pdflabs.com/docs/pdftk-version-history/

“清除信号掩模作为解决方法,以环境即关闭信号在调用pdftk之前,这个问题已知会导致pdftk挂在一些Python web设置以及PHP中。“

猜测哪个是唯一的设置要运行的版本> = 1.43 ;-)

更新每个开发环境PDFTK的最新版本(目前1.44)已经解决了这个问题

1

这如果pdftk没有将输出添加到所需文件夹的权限,也会发生。如果您输出$ execoutput(在命令中使用'verbose')并且看到最后一个条目是'创建输出',您可以看到发生这种情况。下一行应该说输出正在执行,但它会在那里结束。这让我有一段时间了(因为它直接在命令行上运行)。