2016-09-28 2 views
0

им пытаются использовать pg_connect для доступа к Postgres на другом сервере ,,Ошибка 500 (Фатальная ошибка) с помощью pg_connect() в PHP

я сделал открыл удаленный доступ, и я могу использовать bash для подключения к серверу Postgres! и я сделал все все client_ip/32 доверия в config, но когда я пытаюсь использовать pg_connect, я получаю ошибку 500! pgsql также установлен, и я проверил его с function_exists('pg_connect'), и я вернусь! мой код:

$dbconn = pg_connect("host=remote_IP port=5432 dbname=myDB user=postgres") or die("Could not connect"); 

я также попытался это и получить фатальную ошибку 500 снова

$dbconn = pg_connect("host=remote_IP port=5432 dbname=myDB 
user=another_super_user_i_made password=user_password") or die("Could not connect"); 

чем проблема?

+0

Что говорит об ошибке? – Blake

+0

Сервер обнаружил внутреннюю ошибку или неправильную конфигурацию и не смог выполнить ваш запрос. Обратитесь к администратору сервера по адресу [email protected], чтобы сообщить им о времени возникновения этой ошибки и действиях, которые вы выполняли непосредственно перед этой ошибкой. @Blake Более подробная информация об этой ошибке может быть доступна в журнале ошибок сервера. Кроме того, при попытке использовать ErrorDocument для обработки запроса была обнаружена ошибка 500 Internal Server Error. – shaibow

+0

Это то, что он говорит на странице, но что говорит журнал ошибок PHP? – Chris

ответ

0

Возникла проблема блокировки хоста! мой клиентский хостинг не позволял удаленный доступ к БД! вы должны проверить с помощью своего хостинга, что они могут отслеживать вашу проблему.

0

, когда вы можете подключиться к серверу с одного компьютера в своей сети, но получить время на соединение с другой машиной, это обычно связано с одной из нескольких вещей.

1) DNS. Машина, с которой вы тестируете («удаленный доступ», как вы ее называете), может разрешить DNS-имя, а веб-сервер, на котором запущен ваш PHP-код, - нет. Вы можете использовать фактический IP-адрес вместо имен DNS, чтобы проверить это.

2) Связь. В сети разные машины подключаются по-разному. Если вы можете перейти на IP-адрес с устройства «удаленного доступа», но у веб-сервера возникли проблемы с подключением к нему (с «таймаутом соединения»), попробуйте напрямую подключиться к этому веб-серверу (используя «удаленный доступ», такой как SSH) и посмотрите, можете ли вы подключиться вручную оттуда.

Если это не связанная с сетью проблема, это может быть проблемой с вашими таймаутами PG по умолчанию. Попробуйте установить их вручную с помощью строки подключения. В частности, опция «connect_timeout», например:

$d=pg_connect('host=example.com user=pgsql dbname=postgres connect_timeout=5'); 
+0

спасибо за ответ! но да ! Я пробовал использовать ssh на клиенте, и я могу использовать 'psql -U myuser -h myIP' и подключиться к серверу! но я получаю ошибку, когда я использую php! – shaibow

+0

Я бы также добавил, чтобы убедиться, что порт открыт для postgres, кто знает, какие правила службы/iptables/firewall могут быть запущены. – Blake

+0

Используется ли IP-адрес «127.0.0.1»? –