0

windows/apache/php/postgres がインストールされています (php 5.3 および Postgres 9)。PHP から「psql」コマンド ラインを実行しようとしています。そのため、psql はパスワードを要求しません。%appdata%/postgresqlすでにパスに pgpass.conf ファイルがあります

Windowsコマンドラインから行を実行すると

"C:\Program Files\BitNami WAPPStack\postgresql\bin\psql.exe" -U postgres -w -d [DB] < "[SQL FILE]" 

それは正常に動作しますが、shell_exec() を使用して PHP で実行すると動作しません。Apache エラー ログには次のように表示されます。"psql: fe_sendauth: no password supplied"

したがって、なぜコマンドラインからは機能するのにPHPからは機能しないのかわかりませんshell_exec()

よろしく!

4

1 に答える 1

1

%appdata%おそらく、apache の実行環境と、テストしている Windows コマンド ラインとの間で同じではありません。通常、Windows では、Apache はLocalSystemアカウントの下でサービスとして実行されることが期待されます ( Microsoft Windows での Apache HTTP サーバーの使用を参照) 。

ただし、apache の環境変数がpgpass.conf指す別の場所にファイルを保存することもできます ( apache 構成ファイルまたは php コードで宣言する必要があります)。PGPASSFILESetEnv

または、パスワード ファイルを完全に回避し、PGPASSWORD実行直前に環境変数をパスワードの値に直接設定しますpsql

于 2012-07-11T20:12:02.020 に答える