Назад | Перейти на главную страницу

nginx и php | не может разрешить имя хоста и установить соединение с FQDN

Я не знаю, что может вызвать эту проблему, конфигурации nginx или php или что-то еще, кроме:

Я не могу установить связь, когда значение хоста для перечисленных ниже функций php установлено значение FQDN лайк http://www.domain.com или www.domain.com но проблема все уходит если я поставлю имя хоста, например, 192.2.8.1 .

 ex: @fsockopen($host, $port, $errno, $errstr, 10) 
    не установит соединение when $host = "www.somedomain.com"
    successfully connects when $host = "192.2.2.1"

перечисленные функции, страдающие до сих пор, образуют ту же проблему

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

Я не уверен на 100%, но я предполагаю, что эта проблема возникла после того, как я указал свой домен и DNS на сервер ?!

Примечание : этот случай связан с конфигурациями сервера, и я предоставил ссылки на php, чтобы лучше описать случай

«Опускающие теперь могут расслабиться, я полностью изменил описание».

Хорошо ! Наконец, после недели борьбы с этой проблемой:

Во-первых, это очень популярная проблема на протяжении столетия!

https://bugs.php.net/bug.php?id=11058
https://www.google.com/search?hl=es&ie=UTF-8&oe=UTF-8&q=php+php_network_getaddresses%3A+getaddrinfo+failed&meta=&gws_rd=ssl

Некоторые люди сами нашли индивидуальные решения, но определенно это не ошибка PHP.

Что может охватывать этот вопрос:

  • Если вы не можете связаться с @fsockopen
  • Если не могу довольствоваться @file_get_contents
  • Если ваш php-скрипт не может отправить электронную почту или подключиться к SMTP-сервер
  • Если вы не можете проверить связь с доменом или получить не могу найти пинг: несуществующий домен
  • Если не получается выбить ip сервера и получить getaddrinfo () не удалось
  • Если у вас проблемы с php_network_getaddresses прямо
  • Если ваш Wordpress выдает ошибку Невозможно подключиться к tcp: //mydomain.com: 80. Ошибка № 0: php_network_getaddresses: ошибка getaddrinfo: такой хост не известен.

--Что может вызвать эти проблемы ------------------------------------------ -------

[ИКС]

Первое, что нужно проверить, это проверить свой php.ini и убедитесь, что эти атрибуты включены

allow_url_fopen = On
allow_url_include = On


[ИКС]

Создайте файл phpinfo () [ phpinfofile.com на всякий случай ] и проверьте, включены ли эти расширения

OpenSSL
Socket

Специально для пользователей Windows, запускающих xammp или wammp, отключив расширение PHP_OpenSSL, вы не сможете подключиться через @fsockopen



[ИКС]

Теперь важная часть - пойти за resolv.conf Откройте файл resolv.conf, запустив

sudo nano /etc/resolv.conf
  1. Удалить комментарии, если в начале есть строка комментария, удалите ее полностью
  2. Внесите изменения в серверы имен, даже если они в порядке, просто измените их порядок, это поможет очистить кеш DNS, если есть старый кеш.



[ИКС]

Убедитесь, что ваш /etc/resolv.conf не является символической ссылкой указывая на некоторые каталоги, обычно в / run / resolvconf / или т.д .. вы можете запустить

ls -la /etc/resolv.conf
and see what the result is, if it's something like

-rw-r----- 1 root root ` ` /etc/resolv.conf --------> /run/resolvconf/resolv.conf

Если у вас есть ftp-доступ, скачайте ваш /etc/resolv.conf, затем переименуйте текущий файл на вашем сервере в строку /etc/resolv.conf-----bk (чтобы он использовался только для резервного копирования), а затем загрузите тот, который вы скачали из своей системы на сервер / etc /

Или, если у вас нет доступа к ftp, запустите эти команды

sudo cp /etc/resolv.conf /etc/resolv.conf.bak
sudo rm /etc/resolv.conf
sudo nano /etc/resolv.conf
put your nameservers on new file 

ex:
nameserver 8.8.8.8
nameserver 8.8.4.4

and save it by pressing Ctr + X  then Type "Y" and hit enter
chmod a+r /etc/resolv.conf

В этом случае моя проблема заключалась в следующем!

[ИКС]

Убедитесь, что ваш reslv.conf доступен для всех пользователей

chmod a+r /etc/resolv.conf


Результат должен быть

 -rw-r--r-- 1 root root <size> <date> 
after running ls -la /etc/resolv.conf

[X]

Next Run

sudo nano /etc/network/interfaces

Найти DNS-серверы и убедитесь, что серверы имён выглядят нормально (желательно поместить те, которые есть в вашем файле /etc/resolv.conf, например: DNS-серверы 8.8.8.8 8.8.4.4



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

Nginx не использует резольвер системы. Вы должны определить преобразователь, используя resolver директива.

Настраивает серверы имен, используемые для преобразования имен вышестоящих серверов в адреса, например:

resolver 8.8.8.8 valid=30s;

Источник: http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver

из-за количества предоставленной вами информации очень сложно вам помочь, но я бы начал с проверки /etc/resolv.conf и проверьте каждый из nameserver чтобы проверить, правильно ли он работает:

[alexus@wcmisdlin02 ~]$ cat /etc/resolv.conf 
search XXX.XXX
nameserver XX.XX.XX.XX
nameserver XX.XX.XX.XX
[alexus@wcmisdlin02 ~]$ 

ты можешь использовать dig, host и nslookup.