Unoconv不在php脚本中创建pdf文件

时间:2016-10-22 06:51:49

标签: php unoconv

当我在我的mac xampp中运行此phpscript时,它返回成功但不生成pdf文件。但是当我从mac终端运行时,它能够从docx文件创建pdf文件。

 <?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

1 个答案:

答案 0 :(得分:0)

您需要转义shell参数,否则shell可能会解释其特殊字符:

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

或者,在调用shell之前,在unoconv/0.7/bin/环境变量中包含$PATH目录的绝对路径。例如,请参阅this帖子。

显然,$source_file应该在当前目录中。否则,该命令将无法访问它。