10

ラップトップに Web サーバーをセットアップしました。ローカル ネットワーク経由でアクセスする Web アプリケーションを構築しています。次の行を含むphpファイルがあります。

$command = "/usr/bin/oowriter --invisible --convert-to pdf /var/www/hackathon/document/gaurav.doc -outdir /var/www/hackathon/pdf/"
exec($command, $output, $return_var);
print_r($output);

したがって、問題は、ターミナルで上記のコードを実行すると、php が完全に実行されることです。しかし、Web ブラウザー経由でアクセスすると、出力は空であり、意図したとおりの変換は行われません。

Apache エラー ログには、次の行が表示されます。

[Java フレームワーク] 関数 createSettingsDocument (elements.cxx) でエラーが発生しました。
javaldx が失敗しました!
警告: javaldx からのパスの読み取りに失敗しました

https://wiki.archlinux.org/index.php/Libreoffice#Fixing_Java_Framework_Errorの解決策を試しました。しかし、うまくいきませんでした。

OpenJDK 7 を使用しています。

これを機能させる方法について誰か考えがありますか?

4

5 に答える 5

7

投票できない、コメントできない(まだ)...だから...

ティム・アーウィンの言ったことは本当です。

エラーは実際にはcreateSettingsDocumentという名前の関数 (注: 設定ドキュメントの作成) が失敗しているというヒントである関数 createSettingsDocument のエラーを示しています....

あなた(または少なくとも私)がそれを機能させる方法は次のとおりです。

  1. libre office を通常のユーザーとして 1 回実行し、作成されるディレクトリ名をメモします。
  2. サーバーが実行されているユーザー (または PHP が実行されているユーザー。FPM などを使用している場合は、www-data とは異なる可能性があります) を確認してください。
  3. このユーザーのホーム ディレクトリが何に設定されているかを確認します (たとえば、/etc/passwd から)。
  4. 手順 3 のディレクトリに、手順 1 でメモしたディレクトリを作成します。
  5. 作成したディレクトリの所有者を手順 2 のユーザーに変更します

私のサーバーでは必要なディレクトリは実際には/var/www/libreofficeでしたが、私のデスクトップ マシンではディレクトリは/var/www/.config/libreofficeだったので確認する必要があります。

于 2015-02-27T10:00:08.103 に答える
3

OpenOffice にはユーザー ディレクトリが必要です。Web サーバーで OpenOffice を呼び出そうとしているので、それぞれのユーザーに書き込みアクセスを許可する必要があります。たとえば、Debian では、www-dataが/var/www/.openoffice.org/に書き込むことを許可することを意味します。

mkdir /var/www/.openoffice.org
chown www-data /var/www/.openoffice.org
于 2012-12-31T16:12:14.277 に答える
0

Debian 10(バスター)でApache2を介してphpファイルを使用してdocからodfへの変換でこの問題が発生していました。

ブラウザとapcheログに表示されます

"Array ( [0] => javaldx failed! [1] => Warning: failed to read path from javaldx )"

/var/log/syslog で syslog を確認すると、次のエラーが表示されます。これにより、apache のホーム ディレクトリでパーミッションとディレクトリの問題が発生します。

Apr 18 02:44:53 siptrunkbgp kernel: [744789.941286] audit: type=1400 audit(1587192293.959:70491): apparmor="ALLOWED" operation="mkdir" profile="libreoffice-oopslash" name="/var/www/.config/" pid=9835 comm="oosplash" requested_mask="c" denied_mask="c" fsuid=33 ouid=33
Apr 18 02:44:54 siptrunkbgp kernel: [744789.995119] audit: type=1400 audit(1587192294.015:70492): apparmor="ALLOWED" operation="mkdir" profile="libreoffice-soffice" name="/var/www/.config/" pid=9852 comm="soffice.bin" requested_mask="c" denied_mask="c" fsuid=33 ouid=33

したがって、.config ディレクトリを作成し、以下のコマンドを使用して、Apache ルートの場所 (/var/www) に適切なアクセス許可を与えるだけです。

mkdir -p /var/www/.config/libreoffice

chown -Rf www-data.www-data /var/www/.config/

これにより、apache ユーザーは、libreoffice を使用して変換に必要なファイルを作成できます。

于 2020-04-18T07:17:03.160 に答える