sql >> データベース >  >> RDS >> PostgreSQL

Apachelibphp5.soの.pgpassを使用する

    phpにはPGPASSFILEがありますが getenv("PGPASSFILE")で証明されているように、apacheから継承する環境では 、この環境は共有libpqで利用できる環境ではないようです 最終的に.pgpassを処理するライブラリ 。これが、この設定が無視される理由です。

    回避策は、データベースに接続する前に、phpですでに存在する変数を環境に戻すことです。

    if (getenv("PGPASSFILE")!="")
      putenv("PGPASSFILE=".getenv("PGPASSFILE"));
    

    明示的なputenv libpqで使用できるように変数をプッシュします のgetenv()の呼び出し 。通常、プロセスには1つの環境しかないため、これは奇妙ですが、機能しているように見えます。

    別の質問で、拡張機能とphpのコアの間の不一致な環境問題について質問しました: putenv()が必要な理由すでに定義されている環境変数に?




    1. bcp で入力 SQL ファイルを指定できますか?

    2. MySQL:同じテーブルを複数回結合するにはどうすればよいですか?

    3. インデックスの削除が作成よりも時間がかかるのはなぜですか?

    4. 挿入無視をエミュレートし、postgresqlを使用して重複キー更新(SQLマージ)を行う方法は?