• ベストアンサー

PHPからPostgreSQLのダンプを実行したいのですが

PHPからPostgreSQLのダンプを実行したいのですが、 php4.0.6から以下のsystemコマンドを実行してもダンプ採取できなく困っております。 system("pg_dump dbname > filename"); ネットで探してみて、参考になる物もありましたが成功しないので、改めてこちらで質問させてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.3

どこから実行したいのかが書かれていませんが、HTTPから実行したいと仮定して、HTTPユーザーにpg_dumpの実行権がないからです。 実行権のあるユーザーにsuでチェンジしてから実行しましょう。 実行権のあるユーザーがpostgresだと仮定すると system("su -l postgres -c 'pg_dump dbname > filename'"); とすればいいです。

dead_man_walking
質問者

補足

サイトからの実行です。 ご回答頂いた「suコマンド」を入れても同じ結果でした・・・。 (system命令でリターンCDを表示させましたらブランクです) ※色々試した結果、、、何故かは解りませんが、同じサイトで「Perl」からpg_dumpを行うと成功しました。 PHPは、セキュリティなどのガードが関係するのでしょうか・・・? 今回の問題は「Perlで回避も可能」ですが、参考のため、 ご存知でしたら返信頂けるとありがたいです。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

PostgreSQLのコマンドを発行できるアカウントでないとできないということではないでしょうか

すると、全ての回答が全文表示されます。
  • angband
  • ベストアンサー率51% (86/168)
回答No.1

パーミッションではないのでしょうか? system("pg_dump dbname > /tmp/filename"); ではどうですか?だめそうだったらsystem関数の戻り値を 調べてfalseならばコマンドが失敗しています。 第二引数を取得すれば原因が分かると思います。 http://php.s3.to/man/function.system.html

すると、全ての回答が全文表示されます。

関連するQ&A