1

PHPでpg_dumpを介してダンプを作成する必要があるため、次のような関数があります。

function fnDump()
{
    exec("/usr/local/bin/sudo -u pg_user /usr/local/bin/pg_dump mon_alarm > /usr/home/user/monitor_test/renew_db/mon_alarm.sql",$out);
    var_dump($out);
}

問題は、mon_alarm.sqlファイルが空であることです。しかし、コマンドラインからこのコマンドを実行すると、すべて正常に動作します。PHPでダンプを作成するには何を変更すればよいですか?

4

1 に答える 1

3

標準の Web サーバー設定で PHP を実行している場合、PHP は Web サーバー ユーザーのコンテキストで実行されるため機能しません。そのため、sudo ではユーザー コンテキストをそのように変更することはできません。

これがスクリプトの場合、sudo を調整して、ユーザーのパスワードなしの sudo アクセス許可としてコマンドのみを実行する必要があります。そうしないpg_dump、sudo コマンドでパスワードの入力が求められ、自動化されたプロセスが台無しになります。

于 2011-05-30T11:13:22.390 に答える