1

オープン オフィスを使用してコマンド ライン ファイル変換を実行しようとしています。

openoffice pdf filename.doc 2>&1

コマンドラインでルートとして実行すると、正常に動作し、ファイルが変換されます。ただし、ApacheユーザーとしてPHPファイルで上記のコマンドを渡すと、実行されません。

3つのPHPコマンドライン実行をすべて試しました:

$command_output=system($command_line,$rtnval);
$command_output=exec($command_line,$rtnval);
$command_output=passthru($command_line,$rtnval);

また、

echo print_r($rtnval); 
echo print_r($command_output);

$rtnval1 と 1 を返します$command_output。渡された上記のコマンドに対する Linux (centos) の応答が何であるかを知ることができず、混乱しています。コマンドを実行しようとすると、システムの応答がわからないので、非常にイライラします。

/etc/sudersまた、open office コマンドを実行するための apache の許可も含めました。

Apache ALL: (ALL) NOPASSWD: /path/to/openoffice

それでもコマンドはApacheユーザーとしてPHPで実行されません。

このコマンドを実行しないためにApacheユーザーとしてPHPに欠けているものは何ですか?

4

3 に答える 3

2

あたかも apache ユーザーであるかのようにコマンドを実行するには、シェルでこれを試してください:

# switch to superuser
sudo su -
# then switch to the apache user
su - www-data

通常、そこから openoffice を起動することはできません。確かに、それには多くの環境が必要であり、Apache 用に完全にセットアップするのは安全ではありません。

私の知る限り、コマンドの実行を許可する専用ユーザー (通常の「www-runner」ユーザーなど) を作成してから、PHP から「su」を使用することをお勧めします。その他のセキュリティ対策には、専用ユーザーの chroot や、apparmor を使用して、何をどこで実行できるかを制限することが含まれます。いずれにせよ、www-data を sudoers に追加して、www-data にルートとして何かを実行させないでください。これは非常に危険です!

また、libapache2-mod-suphp (所有者のアクセス許可で php スクリプトを実行するための suid apache モジュール) も参照できます。専用の suEXEC apache beast (http://httpd.apache.org/docs) よりも使いやすいです。 /2.0/suexec.html)。後者は本当に簡単な修正ではありません;)

于 2012-02-24T20:47:06.400 に答える
2

openoffice が にない可能性がありますPATH。フルパスで実行してみてください。

于 2011-11-21T22:55:08.053 に答える
1

Apache の php がセーフ モードで実行されているか、それが何と呼ばれているかで、system()機能などが無効になっている可能性があります。

実際、この回答は、「Apacheユーザーとして実行」と呼ばれるものが、実際にはApache環境で実行されていることを前提としています。

于 2011-11-21T22:20:02.153 に答える