Следующий скрипт:
<?php $dnsrecs = dns_get_record('google.com'); foreach($dnsrecs as $dnsrec){ foreach($dnsrec as $label=>$val){ echo $label.':'. $val . '<br>'; } } echo file_get_contents('https://google.com'); ?>
Возвращает список записей DNS, но заканчивается неудачей в файле_get_contents, хотя phpinfo () говорит:
allow_url_fopen On On allow_url_include Off
Со следующей ошибкой:
Сообщение PHP: PHP Предупреждение: file_get_contents ( https://google.com ): не удалось открыть поток: php_network_getaddresses: getaddrinfo не удалось: в строке 5 отсутствует адрес, связанный с именем хоста в /var/www/a.php "при чтении заголовка ответа от upstream, client: 152.66.34.10, server: xxx, request: «GET /a.php HTTP / 1.1», вверх по течению: «fastcgi: // unix: /var/run/php-fpm-www.sock:», host : "xxx"
Разрешение DNS на сервере работает с тем же пользователем, что и nginx:
# sudo -u www-data host google.com google.com has address 216.58.212.142 google.com has IPv6 address 2a00:1450:400e:800::200e google.com mail is handled by 50 alt4.aspmx.l.google.com. google.com mail is handled by 10 aspmx.l.google.com. google.com mail is handled by 30 alt2.aspmx.l.google.com. google.com mail is handled by 40 alt3.aspmx.l.google.com. google.com mail is handled by 20 alt1.aspmx.l.google.com.
Моя версия PHP недавно:
# php --version PHP 5.5.9-1ubuntu4.21 (cli) (built: Feb 9 2017 20:54:58) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
Я запускаю его через php5-fpm, и, похоже, это связано с тем, что sudo -u www-data php a.php
работает правильно.
Мой файл php.ini находится здесь: http://pastebin.com/qZePJdT5 И моя phpinfo находится здесь: http://pastebin.com/cAWuu8wr
Благодарю.