运行 exec in php 使用 unoconv 转换文件

run exec in php for converting file using unoconv

我正在尝试使用 php 中的 unoconv 将 HTML 文件转换为 RTF 文件。

来自 php 我打电话给 :


    ......
    file_put_contents("/tmp/unoconv55b2862fea753.html", $content);
    $command = "unoconv -f rtf -o /tmp/unoconv55b2862fea753.rtf /tmp/unoconv55b2862fea753.html";
    exec($command, $output);
    $converted = file_get_contents("/tmp/unoconv55b2862fea753.rtf");

问题是,file_put content 将保存 .html,但 unoconv 出于某种原因不会将转换后的文件保存到 /tmp 目录中。

当我 运行 在控制台中直接在服务器上执行 $ 命令时,已创建转换文件。

你知道哪里有问题吗?

问题可能在于 PHP 没有 tmp 目录的正确权限。 尝试将转换后的文件保存到您网站的根目录(或其中的子文件夹),看看它是否转换成功。

在 ubuntu 服务器上将 unoconv 配置为 运行 在 apache (www-data) 用户下 此解决方案基于:
https://github.com/dagwieers/unoconv/issues/87#issuecomment-16563550

https://github.com/dagwieers/unoconv/issues/87#issuecomment-32084464

分步指南
请按照以下步骤操作:
1. 创建新文件,其中包含用户 www-data 的 sudoers 条目: sudo vi /etc/sudoers.d/www-data
2.在新建的文件中添加如下内容并保存: www-data ALL=NOPASSWD: /usr/bin/unoconv
3. 在 PHP exec() 中使用 "sudo unoconv"