Я не знаю, что может вызвать эту проблему, конфигурации 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.
Что может охватывать этот вопрос:
--Что может вызвать эти проблемы ------------------------------------------ -------
[ИКС]
Первое, что нужно проверить, это проверить свой 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
[ИКС]
Убедитесь, что ваш /etc/resolv.conf не является символической ссылкой указывая на некоторые каталоги, обычно в / run / resolvconf / или т.д .. вы можете запустить
ls -la /etc/resolv.confand 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 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
.