Php
讓 PHP 與 PostgreSQL 通信
<?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 工作。