
こんにちわ。
Linuxでcronを設定しPHPからexecで「pg_dump」を実行しようとしています。
エラーになり実行ができません。
設定は
/var/spool/cron ディレクトリに
『crontab -e -u postgres』でコマンドを実行し
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=''
HOME=/
08 19 * * * postgres /usr/bin/php /home/var/b_dump.php
とcrontabに記載しています。
コマンドの実行はrootユーザで
権限は777
にしています。
メールを届くようにしているのですが、届くメールは
『postgres does not know where to find the server configuration file.
You must specify the --config-file or -D invocation option or set the PGDATA environment variable.』
と届きます。
googleで検索したのですが、解決方法がわかりません…。
読みにくい文章で申し訳ないのですが、解決方法のご教授を
お願いします。
No.3ベストアンサー
- 回答日時:
#1です。
なるほど。postgresというのはコマンドのつもりじゃなくて、実行ユーザ名指定のつもりだったんですね。
コマンドとしてはそれで良いでしょう。
>pg_dump: [archiver (db)] connection to database "postgres" failed: fe_sendauth: no password supplied
パスワードの指定が必要だが指定されていないというメッセージです。
>PHPのカテゴリに質問をした方がいいのかもしれませんが、
PHPは関係ありません。PostgreSQLのカテゴリで質問してください。
pg_dumpをちょっと調べてみましたが、-U でユーザ指定している例はみつからないですね。
何度も回答ありがとうございます。
もう少し自分で調べてみて、解決しなければ、
PostgreSQLのカテゴリで質問させて頂きます。
ありがとうございました。
No.2
- 回答日時:
おそらく /etc/crontab を見て設定されたのでしょうが、/etc/crontab と 各ユーザーごとのcrontabは書式が違っています。
以下、man 5 crontabからの引用
>各行には 5 つの時刻・日付フィールドがあり、
>(システムの crontab ファイルの場合) ユーザー名が続き
>さらにコマンドが続く。
つまり、システムのcrontabの場合のみ、ユーザー指定フィールドが存在します。
従って、amountainblastさんの設定の場合、ユーザーを指定しているつもりのところが、postgresコマンドを実行していることになりますね。
回答ありがとうごじあます。
ご指摘の通り ユーザー指定フィールドを をcrontabからとってみたら、違うエラーが届くようになりました。
現在は
50 09 * * * /usr/bin/php /home/var/b_dump.php
と設定しました。
Password:
pg_dump: [archiver (db)] connection to database "postgres" failed: fe_sendauth: no password supplied
とエラーが来るようになったのですが、このエラーだとpg_dumpのオプションの渡し方が悪いのでしょうか?
PHPソースは
exec("pg_dump -U postgres -Wtest01 -t postgres > {$b_data_txt}");
と記述しています。
PHPのカテゴリに質問をした方がいいのかもしれませんが、
もう少しご教授をお願いします。
No.1
- 回答日時:
『postgres does not know where to find the server configuration file.
You must specify the --config-file or -D invocation option or set the PGDATA environment variable.』
訳します。
Postgresは、サーバー設定ファイルがどこにあるか見つけることが出来ません。
あなたは、起動オプションの --config-file か -D で設定ファイルを指定するか、PGDATA という環境変数で設定ファイルを指定する必要があります。
それ以前の問題として、postgresコマンドの引数に /usr/bin/php を指定しているのは間違っていると思います。意味不明のコマンドでは?
phpを実行するんですよね?
回答ありがとうごじあます。
このcronではphpを実行しようとしています。
phpのexecでpg_dumpを実行しようとしています。
ご指摘の通り /usr/bin/php をcrontabからとってみたのですが、
phpが実行されていません。
現在は
50 09 * * * /usr/bin/php /home/var/b_dump.php
と設定しました。
Password:
pg_dump: [archiver (db)] connection to database "postgres" failed: fe_sendauth: no password supplied
とエラーが来るようになったのですが、このエラーだとpg_dumpのオプションの渡し方が悪いのでしょうか?
PHPソースは
exec("pg_dump -U postgres -Wtest01 -t postgres > {$b_data_txt}");
と記述しています。
PHPのカテゴリに質問をした方がいいのかもしれませんが、
もう少しご教授をお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
空きIPアドレスを探す方法
-
IPアドレスだとPingが通るのに...
-
他のログイン中のttyをリモート...
-
DOS/VでRS232Cの設定
-
AIX5.1のシステムログに関して
-
TERATERMを使ってのSSH接続がで...
-
-bash: ftp: コマンドが見つか...
-
viエディタが起動しない
-
Linuxのswap領域の表示について
-
隠しレジストリについて
-
「Ctrl + C」が使用できない
-
sarコマンドについて
-
Linuxのmailコマンド実行時の挙...
-
ユーザーごとのログイン時間制限
-
expectを使用しない自動PW入力方法
-
XPブートCDで起動させたいのですが
-
VMwareの時刻同期の方法がわか...
-
コマンドプロンプトからリモー...
-
cshにてファイル名補完の設定の...
-
コマンドプロンプトから別マシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
空きIPアドレスを探す方法
-
IPアドレスだとPingが通るのに...
-
コマンドプロンプトから別マシ...
-
-bash: ftp: コマンドが見つか...
-
expectを使用しない自動PW入力方法
-
他のログイン中のttyをリモート...
-
端末(ターミナル)から端末を...
-
CentOSのrebootがきかない
-
TERATERMを使ってのSSH接続がで...
-
cshにてファイル名補完の設定の...
-
隠しレジストリについて
-
viエディタが起動しない
-
「Ctrl + C」が使用できない
-
ネームサーバからの応答なし。...
-
CentOS7 が起動できない
-
AIXのrshにて、コマンドが実行...
-
no valid signature found
-
リモートコンピュータの時刻を...
-
telnetコマンドを使うと文字化...
-
ルータのホスト名を調べる
おすすめ情報