Newsgroup: it.comp.www.php
Titolo: PostgreSQL e PHP [lungo]

Ho da poco installato tutto quanto (credo) necessario per far funzionare
i suddetti.
(apache-1.3.22-0.6 |php-3.0.15-2 |php-pgsql-3.0.15-2
|postgresql-6.5.3-6)
Il database funziona da riga di comando (psql) e tramite pgacess. Apache
e php funzionano sicuramente dato che ho fatto un po di prove.
Ho creato una semplice pagina php3:
<html>
<head>
<title>Esempio Dbase</title>
</head>
<body>
<TABLE>
<?php
   $db = pg_connect ("localhost", "5432", "", "", "rubrica"); 
   if(!$db) {
     echo ("<h1>Connessione al database "RUBRICA" fallita</h1>"); exit;
   }else {echo("E' andato tutto bene!"); }
 
   pg_close($db);
 ?>
 </body>
 </html>
che invece del risultato desiderato mi da:
Warning:  Unable to connect to PostgresSQL server:  FATAL 1:  SetUserId:
user 'nobody' is not in 'pg_shadow' in /home/httpd/html/prova.php3 on
line 8
Parse error:  parse error in /home/httpd/html/prova.php3 on line 10
Connessione al database
Se invece specifico un utente abilitato ad accedere al database mi da:
Warning:  Unable to connect to PostgresSQL server:  pqReadData() --
backend closed the channel unexpectedly. This probably means the backend
terminated abnormally before or while processing the request. in
/home/httpd/html/prova.php3 on line 8
Parse error:  parse error in /home/httpd/html/prova.php3 on line 10
Connessione al database
Puntualizzo che nel file /var/lib/pgsql/pg_hba.conf ho le seguenti
righe:
local        all                                         trust 
host         all         127.0.0.1     255.255.255.255   trust
che dovrebbero permettere a chiunque di accedere.
Gli errori indicati nella linea 8 e 10 sinceramente non li vedo.
Provvederò ad andare da un buon ottico ma prima se riuscite a farmi
capire dove sbaglio o dove andare a mettere le mani per capirci un po di
più, ve ne sarei grato.
Ho letto il PostgreSQL-HOWTO ma non mi è stato di molto aiuto.
Attendo fiducioso.
Ciao e buon anno.
PS credo che il problema stia nel PHP, ma dove? devo cambiare qualche
configurazione? O è proprio PostgreSQL che non mi vuole dare i dati?
-- 
.___ ._ _ .___ .___ ._____ ....................................
/ __>| | || . \| . \| . . \  >  gunnm(at)
libero.it
 ............
\__ |\___||_|_||_|_||_|_|_|  <  Guida a X-Files: ..............
.. \| .....................  >  
http://digilander.iol.it/gunnm/

   echo ("<h1>Connessione al database "RUBRICA" fallita</h1>"); exit;
Doppio apice senza escape! Soluzioni:


/home/httpd/html/prova.php3 on line 8
Ma tu ti stai collegando con un Internet domain socket. psql in locale
non usa Internet domain, ma Unix domain.
Prova con:
<?
	// user= user proprietario di httpd ("ps waux | grep httpd")
	$conn = pg_connect('dbname=rubrica user=nobody');
	$exec = pg_Exec($conn, 'SELECT version() as info;');
	$data = pg_fetch_array($exec, 0);
	pg_freeresult($exec);
	pg_disconnect($conn);
	print "<HR>e la versione comunicata, se c'č, č $data[info]";
?>	
Sul perche' si pianti, non so. Prova da linea di comando:
	psql rubrica -U nobody -h 127.0.0.1 -p 5432 -tc "SELECT version();"
Leonardo
-- 
And where the black and corkscrew towers climb
Lost and athirst the ragged pack abides,
Old as the aeons, trapped in tombs of time,
Sailing the tortuous temporal tides...

 ?>
[ricut]
Ho provato ad inserire le righe che hai mandato nel file che avevo
creato ma non mi dava ancora accesso come nobody. Ho quindi utilizzato
un utente abilitato ad entrare nel database ma mi dava degli errori
strani. Credo dia ver sbagliato a ricopiare qualcosa, mah poi
controllo.
Ho quindi modificato il pg_connect nel file originale e tutto funziona
correttamente.
Non è che mi spieghi un po' unix domain e internet domain. Postmaster
viene eseguito con l'opzione -i quindi dovrebbe accettarli entrambi(?).
Già che ci sono ti (vi) chiedo se si possono recuperare su internet dei
manuali per cominciare a smanettare. E qualche libro serio per
continuare.
Ciao
Grazie, 


 ha scritto:

Grazie per la dritta. Credo che un paio di occhiali siano ormai
necessari :-). Quando arriva sera non vedo più nulla.
Ciao
PS. Lasciamo stare le merendine miracolose. (vedi fiesta)


continuare.
Per PHP, su 
www.php.net
PostgreSQL, 
www.postgresql.org
C'e' un libro, Advanced PHP Programming - con i templates per creare dei
moduli Zend. Mi ci sto divertendo in questi giorni.
Leonardo