Php

讓 PHP 與 PostgreSQL 通信

  • September 16, 2015

我嘗試在 Firefox 中使用的 PHP 程式碼

<?php
// Connecting, selecting database
$dbconn = pg_connect("host=localhost dbname=masi user=postgres password=abc")
    or die('Could not connect');
?>

我明白了

Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: password authentication failed for user "postgres" in /var/www/ex1.php on line 3

問題似乎出在我的/etc/postgresql/8.3/main/pg_hba.conf. 看來我需要在文件中添加一些 ip-address

我的 pg_dba.conf 中的程式碼

# Database administrative login by UNIX sockets
local   all         postgres                          ident sameuser

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident sameuser
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

該錯誤似乎在 PostgresSQL 中,因為 PHP 和 Apache2 可以工作。我可以通過 訪問 Psql sudo -u postgres psql,因為我沒有設法更改預設設置。這很可能是問題的原因。但是,我的 PHP 程式碼使用預設設置,所以這應該不是問題。

我在**/etc/apache2/envvars**中更改了一行,但未成功:

export APACHE_RUN_USER=postgres     // I changed this line from masi to postgres
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid

我收到相同的錯誤消息。

如何在 Ubuntu 中通過 pg_hba.conf 讓 PHP 與 PostgreSQL 一起工作?

#1 問題

通過以下方式登錄使用者 Postgres

sudo su postgres

創建一個新使用者,例如 Masi for PostgreSQL 通過

CREATE USER masi with SUPERUSER

然後,重新登錄到您的預設使用者。

#2 問題

Pg 中的預設使用者沒有密碼。這導致了PHP中的問題。

我將其更改dbconn為以下

// independent variables
$dbHost = "localhost";
$dbPort = 5432;
$dbName = "masi";
$dbUser = "masi";
$dbPassword = "your-password";

$conn = "host=$dbHost port=$dbPort dbname=$dbName user=$dbUser password=$dbPassword";

問題是我不知道預設 Postgres 帳戶的密碼。這迫使我創建一個帶有密碼的新帳戶。

如果沒有數據庫中的密碼,我沒有讓 pgAdmin 3 工作。

引用自:https://serverfault.com/questions/51140