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

时间:2013-02-06 01:46:49

标签: php pdftk

目前,我需要将50多个PDF文件合并为1个PDF。我正在使用PDFTK。使用以下指南:http://www.johnboy.com/blog/merge-multiple-pdf-files-with-php

但它不起作用。我已经验证了以下内容:

  1. 我已经尝试过命令从我的PHP合并2个pdf,它正在运行。
  2. 我已经回显了最后一个命令并复制了该命令并粘贴到命令提示符并手动运行,所有50个PDF文件都已成功合并。
  3. 因此,我的PHP中的exec和合并50个PDF的命令都是正确的,但在PHP中一起完成时它不起作用。我还声明了set_time_limit(0)以防止任何超时但仍无效。

    知道什么是错的吗?

    提前致谢。

3 个答案:

答案 0 :(得分:5)

您可以尝试找出自己:

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

我认为它是8192,至少在我的系统上,因为它失败的字符串大于10K,但它仍适用于短于7K的字符串

答案 1 :(得分:0)

我不确定单个命令的长度是否有长度限制,但我很确定你可以用“\”分隔多行,只是为了检查是否存在问题。再一次,我不认为它是...当您尝试使用PHP和exec运行完整命令时是否有任何错误输出,也尝试使用system()而不是exec()。

答案 2 :(得分:0)

1.45之前的PDFTK版本仅限于合并26个文件,因为使用“handle”

/* Collate scanned pages sample */
pdftk A=even.pdf B=odd.pdf shuffle A B output collated.pdf

你可以看到“A”和“B”是“句柄”,但应该是一个大写字母,所以只能使用AZ,如果你达到那个限制,也许你的脚本会输出一个错误,如< / p>

Error: Handle can only be a single, upper-case letter

但在1.45中删除了此限制,更改日志提取

  

您现在可以使用多字符输入句柄。以前的版本是   仅限于一个字符,对其施加任意限制   使用句柄时输入PDF的数量。手柄仍然必须全部   大写ASCII。

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