powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Подключение к PgSQL и получение данных
3 сообщений из 3, страница 1 из 1
Подключение к PgSQL и получение данных
    #39663689
wlad1164
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, имеется:
1.Сервер Ubuntu14+апач2+PHP5+OpenVPNServer
2.Сервер Windows+PgSQL+VPNClient
Сервера соединены посредством OpenVPN
Ubuntu=10.8.0.1+1.2.3.4 (внешний для примера)
Windows=10.8.0.3

В PHP нужно выполнить запрос к PgSQL серверу и получить ответ.
Сначала пытался сделать через pg_connect но ничего не получилось, после установил PDO и драйвер pgsql, подключиться вновь не удается.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
         try {
             $db = new PDO("pgsql:host=10.8.0.3;port =65432;dbname=XXX;user=XXX;password=XXX");
             $res = $db->query("SELECT * from user");
            if ($res !== false) {
                foreach ($res as $row) {
                    foreach ($row as $key => $value) {
                        echo ($key . '=>' . $value . ';');
                    }
                    echo '<br>';
               }
            }
        } catch (PDOException $ex) {
            echo $ex->getMessage();
}


Отвечает SQLSTATE[08006] [7] timeout expired

На самом SQL сервере разрешен доступ из сети 10.8.0.0/24 и 1.2.3.4/32 (внешнего IP сервера)
PgAdmin успешно подключается с любого ПК VPN сети, т.е. БД разрешает подключения

Сам PHP тоже может работать с подсетью VPN (проверял GET запросом на VPN клиент 10.8.0.8 проходит успешно)

Понимаю что сам PHP врядли виноват, но не понимаю как отследить, на каком этапе происходит ошибка
...
Рейтинг: 0 / 0
Подключение к PgSQL и получение данных
    #39663750
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Код: php
1.
host=10.8.0.3;port =65432;dbname=X

Явно лишний пробел.

wlad1164Сам PHP тоже может работать с подсетью VPN (проверял GET запросом на VPN клиент 10.8.0.8 проходит успешно)Не вижу смысла проверять коннект на сторонний хост. Есть же вполне реальный IP и порт целевого сервера. Можно хоть телнетом постучаться. Нет коннекта - сетевые проблемы, включая файрволл. Есть коннект - проблемы на "ближней" стороне (PHP, его модули, настройки, скрипты). А уж VPN там или два компа напрямую кабелем соединены или виртуалка через внутреннюю сеть подключена - на этом уровне значения не имеет.
...
Рейтинг: 0 / 0
Подключение к PgSQL и получение данных
    #39663828
wlad1164
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle, Пробел убрал, telnet'ом послутачлся
КЛИЕНТ-КЛИЕНТ-Отвечают
СЕРВЕР-КЛИЕНТ-Никого нет дома

Пошел ковырять iptables, решением было:
iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source х.х.х.х
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source х.х.х.х

Вы были правы, спасибо за наводку =)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Подключение к PgSQL и получение данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]