Problem z połączeniem z Postgres z poziomu php |
Problem z połączeniem z Postgres z poziomu php |
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() ,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ź. |
|
|
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.
-------------------- |
|
|
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. |
|
|
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) -------------------- |
|
|
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:
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:
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 |
|
|
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.
-------------------- |
|
|
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());
|
|
|
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. |
|
|
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'
-------------------- |
|
|
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ę
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ę
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 |
|
|
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?
-------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 28.03.2024 - 13:12 |