Коротко: Я пытаюсь сделать эту работу:
$blank_pdf_form = "blankform.pdf";
$cmd = "pdftk $blank_pdf_form fill_form - output -";
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w")
);
$process = proc_open($cmd, $descriptorspec, $pipes);
if (is_resource($process)) {
//row2xfdf is made-up function that turns HTML-form data to XFDF
fwrite($pipes[0], raw2xfdf($_POST));
fclose($pipes[0]);
$pdf_content = stream_get_contents($pipes[1]);
fclose($pipes[1]);
$return_value = proc_close($process);
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="output.pdf"');
echo $pdf_content;
}
Счастливо украдено здесь: Как передать переменные как stdin в командную строку из PHP
Моя проблема
Не работает следующее сообщение:
Sorry, home directories outside of /home are not currently supported.
See https://forum.snapcraft.io/t/11209 for details.
Мое понимание:
Я нахожусь на Ubuntu, pdftk предоставляется как оснастка, поэтому имеет очень ограниченный доступ к файловой системе. Запуск с php (пользователь www-data
) ограничивает это еще больше.
Что я сделал / попробовал:
Первые ошибки были при запросе существования каталогов /var/www/snap/pdftk/...
Я создал их все вручную, предоставив 777
. Ничего не изменилось. Я создал папку tmp
с 777
в /media
и выполнил snap connect pdftk:removable-media :removable-media
. php может получить доступ к файлам, когда они там есть. Но все та же ошибка с pdftk.
Есть идеи, как это исправить?
Где должен быть pdf для использования pdftk? Я думал об использовании нескольких каналов 1 для PDF и 1 (X) FDF бу не могу найти, можно ли это сделать или нет?