Is there a limit on the length of command passed to exec in PHP?

霸气de小男生 提交于 2019-12-11 01:57:56

问题


Currently I need to merge that 50+ PDF files into 1 PDF. I am using PDFTK. Using the guide from: http://www.johnboy.com/blog/merge-multiple-pdf-files-with-php

But it is not working. I have verified the following:

  1. I have tried the command to merge 2 pdfs from my PHP and it is working.
  2. I have echo the final command and copied that command and paste into command prompt and run manually and all the 50 PDFs are successfully merged.

Thus exec in my PHP and the command to merge 50 PDFs are both correct but it is not working when done together in PHP. I have also stated set_time_limit(0) to prevent any timeout but still not working.

Any idea what's wrong?

Thanks In Advance.


回答1:


You can try to find out yourself:

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

I think it's 8192, at least on my system, because it fails with strings larger than 10K, but it still works with strings shorter than 7K




回答2:


I am not sure if there is a length restriction on how long a single command can be but I am pretty sure you can split it accross multiple lines with "\" just to check if thats the problem. Again I dont think it is... Is there any error output when you try to run the full command with PHP and exec, also try system() instead of exec().




回答3:


PDFTK versions prior to 1.45 are limited to merge 26 files cuz use "handles"

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

as you can see "A" and "B" are "handles", but should be a single upper-case letter, so only A-Z can be used, if u reach that limit, maybe you script outputs an error like

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

but in 1.45 this limitation was removed, changelog extract

You can now use multi-character input handles. Prior versions were limited to a single character, imposing an arbitrary limitation on the number of input PDFs when using handles. Handles still must be all upper-case ASCII.

maybe you only need update your lib ;)



来源:https://stackoverflow.com/questions/14720253/is-there-a-limit-on-the-length-of-command-passed-to-exec-in-php

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!