【问题标题】:PDFTK called via exec() fails silently通过 exec() 调用的 PDFTK 静默失败
【发布时间】:2010-11-12 16:11:49
【问题描述】:

我正在使用pdftk 通过像这样调用 exec() 来动态连接 pdf 文件:

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,并且可以从命令行演示它的全部功能。

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

【问题讨论】:

    标签: php pdf pdf-generation


    【解决方案1】:

    我最终弄清楚了发生了什么。就像一个菜鸟一样,我假设每台机器都在运行最新版本的 pdftk。他们不是。

    上述问题似乎与 1.43 版中修复的已知错误有关

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

    “清除信号掩码作为在调用 pdftk 之前关闭信号的环境的解决方法。已知此问题会导致 pdftk 在某些 Python Web 设置以及 PHP 中挂起。”

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

    将各个开发环境更新到最新版本的pdftk(目前为1.44)已解决问题

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-08-20
        • 1970-01-01
        • 2013-06-02
        • 2021-10-04
        • 1970-01-01
        • 1970-01-01
        • 2017-09-15
        • 1970-01-01
        • 2017-01-10
        相关资源
        最近更新 更多