Я не знаю то, что может вызвать эту проблему, nginx конфигурации или php или что-либо еще, но:
Я не могу установить связь, когда значение хоста для этих упомянутых ниже функций php установлено к FQDN как http://www.domain.com или www.domain.com, но проблема, все уходит, если я поместил IP имени хоста, например, 192.2.8.1.
ex: @fsockopen($host, $port, $errno, $errstr, 10) won't establish connection when $host = "www.somedomain.com" successfully connects when $host = "192.2.2.1"
перечисленные функции, перенося форму та же проблема до сих пор
все те работали отлично, прежде чем я укажу на свой FQDN на мой сервер и когда я тестировал
плюс все это работает и с IP и с доменом от моего ПК, работающего wammp сервер и на том же приложении, на тех же кодах
я не на 100% уверен, но я предполагаю эту проблему, повышенную после того, как я указал на свой домен и DNS к серверу?!
Примечание: этот случай связан с конфигурациями сервера, и я обеспечил php ссылки для лучше описания случая
'downvoters может теперь ослабиться, я полностью изменил описание'.
Хорошо! Наконец, после недели борьбы с этой проблемой :
Прежде всего, кажется, что это очень популярная проблема на протяжении столетия !
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
Некоторые ppl нашли индивидуальные решения, но это определённо не ошибка PHP .
Что это может означать :
-Что-то, что может вызвать эти проблемы-------------------------------------------------.
[X]
Первое, что нужно проверить, это проверить свой php.ini и убедиться, что эти атрибуты включены
allow_url_fopen = On
allow_url_include = On
[X]
Создайте файл phpinfo() [ phpinfofile.com на всякий случай ] и проверьте, включены ли эти расширения
OpenSSL
Socket
, особенно для пользователей windows, выполняющих xammp или wammp, отключив расширение PHP_OpenSSL, вы не сможете соединиться через @fsockopen
.
[X]
Теперь важная часть должна идти после resolv.conf.
Откройте resolv.conf запуском
sudo nano /etc/resolv.conf
[X]
Убедитесь, что ваш /etc/resolv.conf не является симлинком , указывающим на некоторые каталоги, которые обычно находятся в /run/resolvconf/ и т.д. ...
вы можете запустить
ls -la /etc/resolv.confи посмотреть, что получится в результате, если это что-то вроде
-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
В данном случае моя проблема была в том, что !
[X]
Убедитесь, что ваш reslv.conf доступен для всех пользователей
chmod a+r /etc/resolv.conf
Результат должен быть
-rw-r--r-- 1 root root <size> <date>
после выполнения ls -la /etc/resolv.conf[112121267].
sudo nano /etc/network/interfaces
Найдите dns-nameservers и убедитесь, что серверы имен выглядят нормально (желательно поместите любые сервера имен, которые есть в вашем файле /etc/resolv.conf - например: dns-nameservers 8.8.8.8.4. 4
Это все, что я нашел для этого вопроса до сих пор, я старался, чтобы это было понятно любому, простите за надоедливые ссылки на вещи, которые вы хорошо знаете
Если у кого-то еще есть что-то большее по этому вопросу, пожалуйста, поделитесь этим.
Nginx не использует системный резольвер. Вы должны определить резольвер, используя директиву resolver
.
Настраивает серверы имен, используемые для преобразования имен восходящих серверов в адреса, например:
resolver 8.8.8.8 valid=30s;
Source: http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver
из-за большого объема информации, которую вы предоставили, вам очень трудно помочь, но я бы начал с проверки /etc/resolv. conf
и проверьте каждый из nameerver
, чтобы убедиться, что он работает правильно:
[alexus@wcmisdlin02 ~]$ cat /etc/resolv.conf
search XXX.XXX
nameserver XX.XX.XX.XX
nameserver XX.XX.XX.XX
[alexus@wcmisdlin02 ~]$
вы можете использовать dig
, host
и nslookup
.