Я использую PHP для запуска Exec() на сценарий, который выглядит следующим образом:PHP exec() не работает - рано? Нет ошибки?
exec("pdftk xx.pdf fill_form xx.fdf output xx.pdf flatten");
самое странное в том, что, когда я войти в SSH и поместить команду вручную - он отлично работает! он выводит 224k pdf. но когда я использую команду exec(), выдается только первый 36k скрипта. (я проверил - первые 36k хорошего файла идентичны плохому файлу)
no heres странная вещь - это отлично работало с exec(), пока я не добавил еще несколько переменных в файл fdf, сделав их более длинными , Я думал, что это проблема с fdf из-за новых данных - но почему этот процесс будет отлично работать с ssh?
обновление: также я попытался запустить php -f test.php (в котором была только одна строка exec). которые выводят весь файл должным образом. но даже если я иду на http://mydomain.com/test.php, я получаю только часть файла.
сценарий не синхронизирован, потому что я заставляю его эхом что-то после команды exec(), и он отлично работает.
это не может быть проблемой разрешения (SSH входит в качестве корня), потому что он все еще в состоянии записать файл
также - когда я пытаюсь получить обратный или выходное значение из Exec или PASSTHRU, я получаю ничего. возвращаемое значение всегда равно 0.
обновление: в журналах ошибок Apache, я получаю
[Пт Сен 17 20:00:57 2010] [Ошибка] Необработанное Java Исключение: [Пт 17 сентября 20 : 00: 57 2010] [ошибка] java.lang.OutOfMemoryError [пт 17 сентября 20:00:57 2010] [ошибка] <>
я изменил php_ini от 32M до 64M - до сих пор получить его. учитывая, что это все крошечные файлы, я не думаю, что это так. но сможет ли PHP ограничить память дочернего процесса? есть ли другая настройка для этого где-то?
помощь!
Хехе слишком поздно, что вы уже решили проблему, но все же я думаю, что вы должны использовать redis, из-за того, что многие пользователи одновременно называют этот сценарий, использование вашей памяти будет за пределами графика, а производительность ваших компьютеров серьезно ухудшится. – Alfred