アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPからPostgreSQLのダンプを実行したいのですが、
php4.0.6から以下のsystemコマンドを実行してもダンプ採取できなく困っております。

system("pg_dump dbname > filename");

ネットで探してみて、参考になる物もありましたが成功しないので、改めてこちらで質問させてください。

詳細は、、、、
1.Webサイトから実行。
2.Perlだと成功します。
3.リターンコードはブランク(初期化0で、systemコマンド実行後、ページに表示して見ると表示なし。)
3.suコマンドでチェンジしても同様の結果。

※ちなみに、Postgres接続、SQL発行などは成功しております。

A 回答 (1件)

いくつか問題があります。

以下はクリアしてますか?

まず、system関数は絶対パスで指定してみて下さい。
system("/usr/XXX/XXX/pg_dump dbname > filename")のようにしないと駄目じゃなかったかな?

次に、実行権限の問題があります。
PHP、と言うかApacheにPostgresの実行権限がありますか(Systemコマンドを使用する場合のUNIXのユーザ実行権限、通常はapacheか、nobodyか、httpdあたり)?

今回の場合はSystem関数からの実行ですので、Postgres接続も、SQL発行もPostgres関数から接続していでしょうから、全く別と考えた方が良いと思います。System関数の実行はApacheのUNIXユーザとして実行しているでしょうから、そこに権限があるかが重要だと思います。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

System関数の権限・・・確かに理解できます。
今回使用したサイトでの権限、UNIXユーザを調べてみます。(PerlのSystem関数との違いも含めて勉強してみます。)

お礼日時:2005/01/06 18:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!