如何从php文件启动unoconv

jer*_*ano 6 php pdf shell command

我想从脚本php启动命令"unoconv".

$command = '/usr/bin/unoconv --server localhost --port 2002 --format=pdf file.rtf >/dev/null 2>/dev/null';
$rc = system( $command );
echo $rc;
Run Code Online (Sandbox Code Playgroud)

该命令不返回结果,也不创建文件.

我认为访问www-data和unoconv是一个问题.

当我在shell中启动命令时,会创建该文件.

任何的想法?

Pio*_*ski 6

您可以将命令unoconv添加到sudoers.我这样做:

我在例如/ usr/local/bin中创建包装器bash脚本,我有命令unoconv.

#!/bin/bash

if [ -z "$1" ]; then
    echo "Must pass file";
    exit 10;
fi

/usr/bin/unoconv -f pdf $1.rtf
Run Code Online (Sandbox Code Playgroud)

在此之后我添加了条目/etc/sudoers.d:

www-data    ALL=NOPASSWD: /usr/local/bin/unoconv.sh
Run Code Online (Sandbox Code Playgroud)

现在你可以在php中调用脚本:

exec('sudo /usr/local/bin/unoconv.sh '.$fileName);
Run Code Online (Sandbox Code Playgroud)


Igo*_*bin 1

尝试运行

$output = `/usr/bin/unoconv --server localhost --port 2002 --format=pdf file.rtf`;
Run Code Online (Sandbox Code Playgroud)

相反并查看错误消息。