在PHP中传递给exec的命令长度是否有限制?

在PHP中传递给exec的命令长度是否有限制?,php,pdftk,Php,Pdftk,目前我需要将50多个PDF文件合并为1个PDF。我正在使用PDFTK。使用以下指南: 但它不起作用。我已核实以下情况: 我已经尝试了从我的PHP中合并2个PDF的命令,它正在工作 我已经回显了最后一个命令,并复制了该命令,粘贴到命令提示符中并手动运行,所有50个PDF都成功合并 因此,我的PHP中的exec和合并50个PDF的命令都是正确的,但在PHP中一起执行时,它不起作用。我还说明了设置时间限制(0),以防止任何超时,但仍然无法工作 知道怎么了吗 提前感谢。我不确定一个命令的长度是否有限制,

目前我需要将50多个PDF文件合并为1个PDF。我正在使用PDFTK。使用以下指南:

但它不起作用。我已核实以下情况:

  • 我已经尝试了从我的PHP中合并2个PDF的命令,它正在工作
  • 我已经回显了最后一个命令,并复制了该命令,粘贴到命令提示符中并手动运行,所有50个PDF都成功合并
  • 因此,我的PHP中的exec和合并50个PDF的命令都是正确的,但在PHP中一起执行时,它不起作用。我还说明了设置时间限制(0),以防止任何超时,但仍然无法工作

    知道怎么了吗


    提前感谢。

    我不确定一个命令的长度是否有限制,但我非常确定您可以使用“\”将其拆分为多行,以检查这是否是问题所在。再说一次,我不认为是。。。当您尝试使用PHP和exec运行full命令时,是否有任何错误输出,也请尝试system()而不是exec()。

    您可以尝试了解:

    print exec(str_repeat(' ', 5000) . 'whoami');
    

    我认为它是8192,至少在我的系统上是这样,因为它在大于10K的字符串中失败,但在小于7K的字符串中仍然有效。1.45之前的PDFTK版本仅限于合并26个文件,因为它使用“句柄”

    正如您可以看到的,“A”和“B”是“句柄”,但应该是一个大写字母,因此只能使用A-Z,如果达到该限制,可能您的脚本会输出如下错误

    Error: Handle can only be a single, upper-case letter
    
    但是在1.45中,这个限制被删除了,changelog extract

    现在可以使用多字符输入句柄。以前的版本是 仅限于一个字符,对 使用句柄时的输入PDF数。句柄仍然必须是全部 大写ASCII码


    也许你只需要更新你的库;)

    我已尝试使用system(),没有差异,并且得到错误输出1。0表示成功,知道是什么导致1吗?阅读exec上的文档,它会说:“在Windows下使用批处理文件,有1024个字符的行长度限制。因此,我确保批处理文件中的每一行不超过1024个字符。”我不知道您是否在使用Windows。同时阅读你发布的链接,上面写着使用passthru()而不是system和exec?是的,我在Windows下使用,我已经尝试了passthru、system和exec这三种。但不确定1024个字符的部分。我会发现并尝试的。
    Error: Handle can only be a single, upper-case letter