Проблема exec () с длинной командой в PHP

Я использую wkhtmltopdf на своем сервере для переноса HTML-документа в PDF. Он работает очень хорошо, когда я использую короткий URL-адрес, например:

exec("/opt/wkhtmltopdf/bin/wkhtmltopdf --page-size 'Letter' --orientation 'Portrait' 'http://myurl.com/myPHPfile.php?id=12' '/tmp/myfile.pdf'") 

Проблема возникает, когда я использую длинную команду, например:

 exec("/opt/wkhtmltopdf/bin/wkhtmltopdf --title 'The name of my file' --page-size 'Letter' --orientation 'Portrait' 'http://myurl.com/myPHPfile.php?phpsid=d8dbfbb91c0748d91426441e67aaf2b6&id=436' '/tmp/The name of my file.pdf'") 

Обратите внимание, что когда я запускаю эту длинную команду непосредственно из Putty, она отлично работает.

Проблема в том, что когда я использую exec (или shell_exec () или system () или passthru ()), страница всегда загружается, и мой веб-сервер больше не отвечает. Мне нужно закрыть процесс из Putty (ps -x, а затем убить PID).

Обратите внимание, что если я удалю? Phpsid =, он работает хорошо, поэтому я говорю, что проблема возникает только при длинной команде. Если я удалю? Phpsid = d8dbfbb91c0748d91426441e67aaf2b6 и замените его на? Anything = ImAmAVeryLongStringThatDoNothing он тоже не работает.

Я на CentOS 5, используя WHM / cPanel. Заранее благодарю за любую помощь!

Редактировать:

Я пробовал urlencode (), не работает.
Я попробовал escapeshellarg (), команда правильно передана, но не работает.
Я пытался использовать короткие параметры, команда правильно передана, но не работает.

Изменить 2:

Существует ли ограничение длины строки при использовании exec (), system () или passthru ()?

Редактировать 3:

Наконец, благодаря Wrikken , проблема заключалась в том, что я передавал session_id () в URL-адресе, а затем повторно использовал его в exec (). Мне пришлось добавить session_write_close (); перед моим exec (), поэтому PHP разблокирует текущий сеанс, чтобы сделать его повторным использованием сценария в exec (). См. Комментарии ниже для получения дополнительной информации.