Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z połączeniem z Postgres z poziomu php
Dariomasta
post 12.03.2014, 10:59:11
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.03.2014

Ostrzeżenie: (0%)
-----


Witam

Mój problem jest następujący. Mam serwer z Debianem na serwerze i łącze się z nim lokalnie za pomocą puttyego. W phpinfo(); wyświetla mi obsługę posgresa
(w php.ini dodałem "extension=pgsql.so" i "extension=php_pgsql.dll" oraz "extension_dir=/usr/lib/php5/20100525" po czym pgsql zaczał się wyświetlać w phpinfo()wink.gif
,a w bazie danych mam zrobioną bazę o nazwie gitgui3 jako root i haslo infundybula. Próbuję się połączyć za pomocą:

$db_handle=pg_connect("dbname=gitgui3 user=root password=infundybula host=localhost hostaddr=10.10.10.116 port=5432");
if(db_handle)
echo "Polaczono!";
else
echo "Nie polaczono!";

dostaję wciąż "Nie połączono!". Więc nie łączy. Ma ktoś jakiś pomysł co robię źlę i jak to naprawić?
Z góry dzięki za odpowiedź.


Go to the top of the page
+Quote Post
viking
post 12.03.2014, 11:47:39
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Przydało by się żebyś wyświetlił komunikat błędu. Podejrzewam że w pg_hba.conf nie masz wpisu dla hosta.


--------------------
Go to the top of the page
+Quote Post
Dariomasta
post 12.03.2014, 13:51:14
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.03.2014

Ostrzeżenie: (0%)
-----


Sęk w tym, że nie dostaję żadnego komunikatu błędu. Jedynym efektem jaki dostaje jest "Nie połączono!" co wynika z faktu, że pg_connect zwraca
tylko true lub false jak mniemam. Nie dostaję żadnych errorów, ani tego typu rzeczy. Plik pg_hba.conf modyfikowałem, nie wiem czy dobrze:
generalnie w TYPE mam local albo host w DATABASE mam wszędzie all w USER mam wszędzie all, a w ADDRESS mam albo 10.10.10.116/5432 albo 127.0.0.1
albo ::1/128 a w METHOD mam trust albo md5. Czy to są dobre ustawienia czy złe? Proszę o dalszą pomoc.
Go to the top of the page
+Quote Post
viking
post 12.03.2014, 14:57:08
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


To chyba to było http://pl1.php.net/manual/en/function.pg-result-error.php
Przełącz się w takim razie testowo na PDO i zgarnij wyjątek. Nie pamiętam czy w logach php też czegoś nie było error_reporting(-1)


--------------------
Go to the top of the page
+Quote Post
Dariomasta
post 13.03.2014, 08:58:07
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.03.2014

Ostrzeżenie: (0%)
-----


A możesz napisać kod odnośnie tego? Użyłem tego kodu podanego w przykładzie ze strony którą podałeś czyli:
  1. <?php
  2. $db_handle=pg_connect("dbname=gitgui3 user=root password=infundybula host=localhost hostaddr=10.10.10.116");
  3. $res1=pg_get_result($db_handle);
  4. if($db_handle)
  5. echo "Polaczono!";
  6. else
  7. echo "Nie polaczono!";
  8. ?>


Nie wiem czy o to Tobie chodziło, ale dodam, że po tej modyfikacji dalej się nic nie dzieje. A odnośnie tego PDO to nie wiem o co chodzi. Najlepiej napisz kod
i napisz jasno co i jak mam robić.

Pogrzebałem trochę w Debianie i znalazłem plik z error-logami i tam w pliku error.log mam taki oto wpis:
[error] [client 10.10.10.4] PHP Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server:
Connection refused\n\tIs the server running on host 10.10.10.116 and accepting\n\tTCP/IP connections on port 5432? in var/www/test.php on line 20

Czyli nie może podłączyć się do Postgresa, ale dlaczego? I jak to rozwiązać?

Co do PDO to też trochę poczytałem na stronach:
http://pl1.php.net/manual/en/class.pdo.php
http://pl1.php.net/manual/en/ref.pdo-pgsql.connection.php
http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO

i wpisałem taki oto kod:

  1. <?php
  2. try
  3. {
  4. $db_handle=new PDO('pgsql:host=localhost;dbname=gitgui3','root','infundybula');
  5. echo 'Nawiazane polaczenie!';
  6. }
  7. catch(PDOException $e)
  8. {
  9. echo 'Polaczenie nie moglo byc nawiazane'.$e->getMessage();
  10. }
  11. ?>


Jednak dostaję taki oto błąd:

"Polaczenie nie moglo być nawiązaneSQLstate[08006][7] KATASTROFALNY: autoryzacja haslem nie powiodła się dla użytkownika "root""

Wskazywaloby to, że jest błędne hasło jednak sprawdzałem i jest poprawne.(Podaje użytkownika i haslo z logowania do systemu Debian, z którego
wchodzę do bazy danych i mam dostęp do baz). Podawałem też inne usery i passwordy np. postgres który jest domyślny, ale dostaję ten sam błąd.

Co w takim razie robię źle? Proszę o dalszą pomoc.


Ten post edytował Dariomasta 13.03.2014, 12:11:28
Go to the top of the page
+Quote Post
viking
post 13.03.2014, 09:09:58
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


W stopce mam artykuł o PDO. Kopiuj wklej podstawiając pod $dsn właściwe dane dla hosta.


--------------------
Go to the top of the page
+Quote Post
mmmmmmm
post 13.03.2014, 10:38:20
Post #7





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


Daj tak:
Kod
$dbconn = pg_connect("dbname=gitgui3 user=root password=infundybula host=localhost")    or die('Nie można nawiązać połączenia: ' . pg_last_error());
Go to the top of the page
+Quote Post
Dariomasta
post 13.03.2014, 12:26:33
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.03.2014

Ostrzeżenie: (0%)
-----


mmmmmmm wpisałem tak jak mówisz, ale dostaję tylko:

"Nie można nawiazac polaczenia: "

ta funkcja pg_last_error() nie wywala żadnego błędu w tym przypadku po prostu nic się nie dzieje.

Wyedytowałem poprzedni post, w nim też napisałem co się dzieje i na czym aktualnie się zatrzymałem.
Go to the top of the page
+Quote Post
viking
post 13.03.2014, 12:37:48
Post #9





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


W postgresql.conf dodaj jeszcze: listen_addresses = 'localhost, 10.10.10.116'


--------------------
Go to the top of the page
+Quote Post
Dariomasta
post 13.03.2014, 13:15:34
Post #10





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 12.03.2014

Ostrzeżenie: (0%)
-----


viking wpisałem tak jak mówisz w postgresql.conf :
listen_addresses = 'localhost, 10.10.10.116'
Odkomentowałem tą linijkę bo była zahaszowana i dodałem 10.10.10.116,
ale dalej ten sam błąd mi wyskakuje. Zrestartowałem apache po tym, ale też nic.

Co ciekawe, jeśli wpisuję
  1. $db_handle=new PDO('pgsql:host=10.10.10.116;dbname=gitgui3','root','infundybula');


Dostaję błąd:
could not connect to server: Connection refused\n\tIs the server running on host 10.10.10.116 and accepting\n\tTCP/IP connections on port 5432?

Natomiast jeśli wpisuję
  1. $db_handle=new PDO('pgsql:host=localhost;dbname=gitgui3','root','infundybula');


Dostaję błąd:
[08006][7] KATASTROFALNY: autoryzacja haslem nie powiodła się dla użytkownika "root""

O co chodzi? Localhost i 10.10.10.116 to chyba powinno być to samo...

Ten post edytował Dariomasta 13.03.2014, 13:17:17
Go to the top of the page
+Quote Post
viking
post 13.03.2014, 13:32:28
Post #11





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


O ile w /etc/hosts masz takie mapowanie. I w postgresie domyślnie użytkowniekiem jest 'postgres' nie root. Zresetowałeś postgresa oczywiście?


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 13:12