Unoconv не создает PDF-файл в PHP-скрипте

Когда я запускаю этот phpscript в моем mac xampp, он возвращается успешно, но не генерируется pdf-файл. Но когда я запускаю из терминала Mac, он может создать файл PDF из файла DOCX.

 <?php
$source_file = 'c++ documentation.docx';
$cmd = "unoconv/0.7/bin/unoconv";
$command = sprintf("/Applications/XAMPP/xamppfiles/htdocs/phpdocx/unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1",
escapeshellarg($source_file));
echo shell_exec($command);

echo "yoyo";

if(shell_exec($command)){
echo "successful";
}else{
echo "failed";
}
?>

Это мой отредактированный код, и он сказал sprintf (): слишком мало аргументов!

Это та часть, где он дает это сообщение, но он сказал, что успешно и не PDF-файлы были найдены

-1

Решение

Вам нужно экранировать аргументы оболочки, иначе оболочка может интерпретировать свои специальные символы:

$source_file = 'c++ documentation.docx';
$command = sprintf("unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1",
escapeshellarg($source_file));

Укажите полный (абсолютный) путь к вашему unoconv/0.7/bin/unoconv исполняемый файл, поскольку он кажется недоступным для вашего $PATH переменная окружения:

$command = sprintf("/path/to/unoconv/0.7/bin/unoconv -h -v -f pdf -o /phpdocx/docimages/testing.pdf %s 2>&1",
escapeshellarg($source_file));

Кроме того, включите абсолютный путь к unoconv/0.7/bin/ каталог в $PATH переменная окружения перед вызовом оболочки. Ссылаться на этот пост, например.

Очевидно, что $source_file должен быть в текущем каталоге. В противном случае команда не сможет получить к ней доступ.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]