6

スクリプトphpからコマンド「unoconv」を起動したい。

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

コマンドは結果を返さず、ファイルは作成されません。

www-data と unoconv でのアクセスに問題があると思います。

シェルでコマンドを起動すると、ファイルが作成されます。

何か案が?

4

6 に答える 6

7

コマンド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

この後、エントリを追加し/etc/sudoers.dます:

www-data    ALL=NOPASSWD: /usr/local/bin/unoconv.sh

そして今、あなたはphpでスクリプトを呼び出すことができます:

exec('sudo /usr/local/bin/unoconv.sh '.$fileName);
于 2012-07-11T08:01:04.110 に答える
1

私にとっては次のように機能します:

$cmd = "/usr/bin/unoconv -f docx files/thefile";
shell_exec($cmd);

もちろん、これは事前に行う必要があります (Web から php スクリプトを起動する場合):

chown -R www-data:www-data files/
于 2016-01-26T18:31:09.293 に答える
1

実行してみてください

$output = `/usr/bin/unoconv --server localhost --port 2002 --format=pdf file.rtf`;

代わりに、エラー メッセージを参照してください。

于 2012-07-11T07:59:07.420 に答える
0

Apache を実行しているときに、この問題の解決策を見つけました。www-dataユーザーのホームフォルダーを作成する必要があります

 sudo mkdir /home/www-data
 sudo chown www-data /home/www-data

www-data最後に、ユーザーのホーム ディレクトリとデフォルト シェルを編集する必要があります。

sudo vim /etc/passwd

最後の 2 つの文字列のエントリについては、www-dataそれぞれを次のように置き換える必要があります。

/home/www-data
/bin/bash
于 2014-09-27T23:55:23.720 に答える
0

このようにシンプル

$output = shell_exec('/opt/libreoffice5.0/program/python unoconv -f rtf test.html');

構成に合わせてパスを編集します。

それはうまくいきます!

于 2015-09-28T07:16:45.700 に答える