alekciy
Новичок
chroot и резолвинг имен
PHP: 5.3.0 (как fastcgi через php-fpm)
ОС: Debian 4
PHP находится в chroot и при это не получается использовать функции подобные file_get_contents() с доменными именами, хотя по IP все работает. Т.е. код:
не работает и вываливается с ощибкой:
Если же сделать так:
то все работает. Т.е. резолвинг имен внутри chroot не пашет.
Я скопировал внутрь chroot файлы resolv.conf и hosts. Если в hosts добавить запись: 213.180.204.3 www.yandex.ru, то данный код начинает работать, но это же не выход, не могу же я в hosts пихать все имена которые мне когда либо могут понадобиться. Может кто подскажет выход или знает какие нужно скопировать файлы в chroot что бы резолвинг заработал?
Пытался через strace вытянуть инфу о том, какие вызовы делают резолвинг и попытаться определить нужные файлы, но подобной информации в выводе strace-а я не вижу:
Подкиньте хоть какую идею, уже не знаю, в какую сторону копать (
PHP: 5.3.0 (как fastcgi через php-fpm)
ОС: Debian 4
PHP находится в chroot и при это не получается использовать функции подобные file_get_contents() с доменными именами, хотя по IP все работает. Т.е. код:
PHP:
<?php
echo file_get_contents("http://www.yandex.ru/");
?>
Код:
Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /alekciy.ru/test.php on line 2 Warning: file_get_contents([url]http://www.yandex.ru/[/url]): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /alekciy.ru/test.php on line 2
PHP:
<?php
echo file_get_contents("http://213.180.204.3/");
?>
Я скопировал внутрь chroot файлы resolv.conf и hosts. Если в hosts добавить запись: 213.180.204.3 www.yandex.ru, то данный код начинает работать, но это же не выход, не могу же я в hosts пихать все имена которые мне когда либо могут понадобиться. Может кто подскажет выход или знает какие нужно скопировать файлы в chroot что бы резолвинг заработал?
Пытался через strace вытянуть инфу о том, какие вызовы делают резолвинг и попытаться определить нужные файлы, но подобной информации в выводе strace-а я не вижу:
Код:
accept(0, {sa_family=AF_INET, sin_port=htons(39078), sin_addr=inet_addr("127.0.0.1")}, [16]) = 3
clock_gettime(CLOCK_MONOTONIC, {376297, 173035942}) = 0
poll([{fd=3, events=POLLIN}], 1, 5000) = 1 ([{fd=3, revents=POLLIN}])
read(3, "\1\1\0\1\0\10\0\0"..., 8) = 8
read(3, "\0\1\0\0\0\0\0\0"..., 8) = 8
read(3, "\1\4\0\1\4\241\7\0"..., 8) = 8
read(3, "\17\24SCRIPT_FILENAME/alekciy.ru/test"..., 1192) = 1192
read(3, "\1\4\0\1\0\0\0\0"..., 8) = 8
time(NULL) = 1250382487
clock_gettime(CLOCK_MONOTONIC, {376297, 173506942}) = 0
time(NULL) = 1250382487
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={60, 0}}, NULL) = 0
rt_sigaction(SIGPROF, {0x83573e0, [PROF], SA_RESTART}, {0x83573e0, [PROF], SA_RESTART}, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0
time(NULL) = 1250382487
time(NULL) = 1250382487
open("/alekciy.ru/test.php", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0755, st_size=92, ...}) = 0
fstat64(4, {st_mode=S_IFREG|0755, st_size=92, ...}) = 0
fstat64(4, {st_mode=S_IFREG|0755, st_size=92, ...}) = 0
mmap2(NULL, 92, PROT_READ, MAP_SHARED, 4, 0) = 0xb7f65000
clock_gettime(CLOCK_MONOTONIC, {376297, 174294942}) = 0
getcwd("/"..., 4095) = 2
chdir("/alekciy.ru") = 0
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={60, 0}}, NULL) = 0
munmap(0xb7f65000, 92) = 0
close(4) = 0
socket(PF_NETLINK, SOCK_RAW, 0) = 4
bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0
getsockname(4, {sa_family=AF_NETLINK, pid=18485, groups=00000000}, [12]) = 0
time(NULL) = 1250382487
sendto(4, "\24\0\0\0\26\0\1\3\227R\207J\0\0\0\0\0\0\0\0"..., 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"0\0\0\0\24\0\2\0\227R\207J5H\0\0\2\10\200\376\1\0\0\0\10\0\1\0\177\0\0\1\10"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 108
recvmsg(4, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"\24\0\0\0\3\0\2\0\227R\207J5H\0\0\0\0\0\0\1\0\0\0\10\0\1\0\177\0\0\1\10"..., 4096}], msg_controllen=0, msg_flags=0}, 0) = 20
close(4) = 0
stat64("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=46, ...}) = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 4
fcntl64(4, F_GETFD) = 0
fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
fstat64(4, {st_mode=S_IFREG|0644, st_size=242, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f65000
read(4, "127.0.0.1\tlocalhost\n127.0.1.1\tdeb"..., 4096) = 242
read(4, ""..., 4096) = 0
close(4) = 0
munmap(0xb7f65000, 4096) = 0
open("/alekciy.ru_error.log", O_WRONLY|O_CREAT|O_APPEND, 0644) = 4
time(NULL) = 1250382487
write(4, "[16-Aug-2009 04:28:07] PHP Warnin"..., 164) = 164
close(4) = 0
open("/alekciy.ru_error.log", O_WRONLY|O_CREAT|O_APPEND, 0644) = 4
time(NULL) = 1250382487
write(4, "[16-Aug-2009 04:28:07] PHP Warnin"..., 208) = 208
close(4) = 0
chdir("/") = 0
write(3, "\1\6\0\1\1r\6\0X-Powered-By: PHP/5.3.0\r\n"..., 400) = 400
shutdown(3, 1 /* send */) = 0
recv(3, "\1\5\0\1\0\0\0\0"..., 8, 0) = 8
recv(3, ""..., 8, 0) = 0
close(3) = 0
clock_gettime(CLOCK_MONOTONIC, {376297, 176801942}) = 0
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
clock_gettime(CLOCK_MONOTONIC, {376297, 176892942}) = 0
accept(0, <unfinished ...>