Мне нужна помощь, чтобы понять, почему PHP-скрипт PHP-FPM не может разрешить полное доменное имя через несколько мгновений после запуска службы PHP-FPM.
Когда я (пере) запускаю службу PHP-FPM, она работает (разрешение успешно) через несколько секунд, а затем происходит сбой разрешения.
Я хромировал PHP-приложение (на самом деле WordPress) через PHP-FPM (настройки « chroot` в файле конфигурации пула PHP-FPM) и дал PHP то, что ему нужно:
/etc/hosts
файлmount --bind
из / etc / ssl / certs/dev/urandom
(с помощью mknod
)mount --bind
из / usr / share / zoneinfomount --bind
/ var / run / mysqld для сокета к MySQL.mount --bind
/ var / run / nscd для преобразователя сокетов в nscd.Я заметил проблему, когда WordPress пожаловался, что не может загружать обновления с:
stream_socket_client (): php_network_getaddresses: getaddrinfo не удалось: имя или служба неизвестна stream_socket_client (): невозможно подключиться к tcp: //www.wordpress.org: 80 (php_network_getaddresses: getaddrinfo не удалось: имя или служба неизвестна)
Пример скрипта:
<?php
$domain = 'www.example.com';
echo 'gethostbynamel(): '; var_dump(gethostbynamel($domain));
echo 'checkdnsrr(): '; var_dump(checkdnsrr($domain, 'A'));
echo 'dns_get_record(): '; var_dump(dns_get_record($domain));
?>
Когда это работает:
gethostbynamel(): array(1) {
[0]=>
string(13) "93.184.216.34"}
checkdnsrr(): bool(true)
dns_get_record(): array(1) {
[0]=>
array(5) {
["host"]=>
string(15) "www.example.com"["class"]=>
string(2) "IN"["ttl"]=>
int(86348)
["type"]=>
string(1) "A"["ip"]=>
string(13) "93.184.216.34"}
}
После нескольких мгновений:
gethostbynamel(): bool(false)
checkdnsrr(): bool(true)
dns_get_record(): array(1) {
[0]=>
array(5) {
["host"]=>
string(15) "www.example.com"["class"]=>
string(2) "IN"["ttl"]=>
int(86400)
["type"]=>
string(1) "A"["ip"]=>
string(13) "93.184.216.34"}
}
Обратите внимание, что в любом случае оба dns_get_record()
а также checkdnsrr()
всегда работает отлично.
Три вопроса:
dns_get_record()
а также checkdnsrr()
добиться разрешения полного доменного имени при gethostbynamel()
потерпит неудачу?gethostbynamel()
нужно в настройке chroot?Версии программного обеспечения:
Спасибо
Задача ещё не решена.
Других решений пока нет …