2016-10-22 5 views
-1

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

<?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(): Слишком мало аргументов!

This is the part where it give this message but it said successful and not pdf files were found

+0

Итак, сценарий удался, когда вы запустили его из CLI, и не удается, когда вы запрашиваете его через веб-сервер, правильно? –

+0

yup it преуспевает в терминале CLI, но не удалось в web-сервере xampp. – user3711175

+0

. Я бы где-то напечатал команду, а затем попытался запустить ее из CLI. –

ответ

0

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

$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)); 

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

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

+0

Erm, как мне это сделать? Это называется терминалом и помещается в него? – user3711175

+0

/Applications/XAMPP/xamppfiles/htdocs/phpdocx/unoconv/0.7/bin/unoconv Вы имеете в виду как настоящий путь? – user3711175

+0

это все равно то же самое, что и мне это использование: unoconv [options] file [file2 ..] Конвертировать из любого формата, поддерживаемого опциями LibocOffice unoconv: -c, --connection = string использовать настраиваемую строку подключения -d, --doctype = тип указать тип документа (документ, графика, презентация, электронная таблица) -e, --export = name = значение установить параметры фильтра экспорта, например. -e PageRange = 1-2 -f, --format = format указать выходной формат -F, --field = name = значение заменить определяемое пользователем текстовое поле со значением, например. -F Client_Name = "Oracle" -i, --import = строка набора параметров фильтра импорта, например. -i utf8 -l, но он сказал успешно – user3711175

 Смежные вопросы

  • Нет связанных вопросов^_^