編集する

編集する

Perl CGI(Mason)を使用してxlsxファイルをpdfに変換しようとしています。

純粋なPerlを使用してファイルを変換する方法が見つからなかったため、これを使用してsoffice作業を実行しました。

ブラウザでこれを行うまではうまくいきます。

変換を担当するコードは非常に簡単です。

my @cmd = ( "soffice", "--headless", "--convert-to", "pdf", $filename );
system(@cmd);

通常のユーザーが実行するとコマンドラインで正常に実行されますが、Apacheユーザー(ApacheのMason)として実行するとエラーが発生します。

(process:14954): dconf-CRITICAL **: 14:28:42.846: unable to create directory '/usr/share/httpd/.cache/dconf': Permission denied.  dconf will not work properly.

誰もが正しい方向に私を指すことができますか?

システムコマンドの代わりにPerlだけを使用してxlsxをpdfに変換する方法はありますか?

編集する

エラーを伝えるためにdconf苦情のあるディレクトリツリーを手動で作成し、それをApacheユーザーに渡しましたが、次のエラーが発生しました。

[Java framework] Error in function createSettingsDocument (elements.cxx).
javaldx failed!
Warning: failed to read path from javaldx

私が試しても同じですunoconv

Error: Unable to connect or start own listener. Aborting.

解決策

unoconv --listener操作する前に手動で起動すると問題が解決しました。 PDFファイルを作成しています。

ベストアンサー1

このエラーは、Apacheがコマンドラインでこのスクリプトを実行したユーザーとは異なるユーザーとして実行されているために発生します。最近ではCGIを使用していません。 FastCGIで実行するようにMasonを設定しましょう。地獄、私もApacheを捨て、NGINXを使用します。この問題を解決するには、次のいずれかを実行する必要があります。

  • 同じユーザーがディレクトリを所有するか、Apacheを実行しているユーザーが書き込むことができるようにディレクトリを作成します。 Apache は CGI プロセスを生成するため、スクリプトを実行するユーザーとは異なる権限があります。ファイルを見て/etc/apache2/envvars変数を確認APACHE_RUN_GROUPし、APACHE_RUN_USER
  • 使用数を実行

おすすめ記事