2017-10-24 5 views
0

내 문제를 해결하기 위해 집중적으로 검색 한 후 일한 결과를 얻을 수 없었습니다.
저는 잘 작동하는 FastCGI와 php-fpm (php7의 우분투 16.04에서)을 사용하여 chrooted php를 실행하고 있습니다. 그러나 예를 들어 file_get_content : file_get_contents(): php_network_getaddresses: getaddrinfo failed과 같이 예상되는 DNS 확인 문제가 발생합니다. php-fpm chroot에서 DNS 확인 오류가 발생했습니다.

나는 온라인 꽤 보니 여기 내가 이미 (성공없이) 시도했습니다 내용은 다음과 같습니다
  • 내가 방법 here를 설명 사용, 또한 사용되는 모든 라이브러리를 복사하기 위해 this tutorial에 적응하려고 노력 PHP에 의해, 그리고 물론 복사 호스트와 알아낼 수 파일
  • 의 나는 또한 일부 SSL을 가지고
  • /nscd를 실행은/var /에 chroot 안에서 그것을 장착하여 호스트가 내부와 chroot를 외부 파일 링크 nscd를 사용하려고 문제가 있으므로 this certificate을 다운로드하고 기본 php-curl 인증서는 아마 (openssl_get_cert_locations() 후 발견 : ["default_cert_file"]=> string(21) "/usr/lib/ssl/cert.pem) 누락 된
    편집 :이) (은 phpinfo 등 많은 일을하지 않는 것 그래서 어쩌면 내가 조금하려면 openssl 설정 파일을 조정할해야의 된 인증서 파일 (see)에 대한 값도 반환하지 않는다 그러나 나는 무엇을 찾아야할지 정말로 모른다. 그것은 너무 큰 chroot 환경을 만들기 때문에 debootstrap을 (또는이 같은 다른 프로그램)를 사용하여

는 나를 위해 옵션이 아닙니다, 나는 많은 chroot 해 실행 할 수로 내가 만들 가볍고 빠르게 유지 기꺼이 하나의 기계에.

기본 PHP-FPM 수영장 :

[${username}] 
user = ${username} 
group = www-data 
listen = /run/php/php7.0-fpm.${username}.sock 
listen.owner = ${username} 
listen.group = www-data 
pm = ondemand 
pm.max_children = 20 
pm.process_idle_timeout = 10s 
pm.max_requests = 250 
chroot = /var/www/${username} 
chdir =/

기본 아파치 가상 호스트 파일

플러스, 여기 내 설정 파일 그러나 나는 대부분의 PHP 함수는 chroot 환경에서 잘 작동하기 때문에 문제가 여기에 의심이다 :

<VirtualHost *:80> 
    ServerName www.${domain} 
    ServerAlias ${domain} 
    ServerAdmin [email protected]${domain} 
    DocumentRoot /var/www/${username}/var/www/${username} 
    <IfModule mod_fastcgi.c> 
    AddHandler php7-fcgi-${username} .php 
    Action php7-fcgi-${username} /php7-fcgi-${username} virtual 
    Alias /php7-fcgi-${username} /usr/lib/cgi-bin/php7-fcgi-${username} 
    FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi-${username} -socket /var/run/php/php7.0-fpm.${username}.sock -pass-header Authorization 
     <Directory /usr/lib/cgi-bin> 
     Require all granted 
     </Directory> 
    </IfModule> 
</VirtualHost> 

고마워요! (는 chroot가/lib 디렉토리와 같은 파티션에있는 경우에만 작동)

etc/resolv.conf 
lib/libnss_dns.so.2 

당신은 추가 디스크 공간을 사용 방지하기 위해 하드 링크 수 :

답변

0

우분투 16.04에서, 당신은 당신의 chroot에서 적어도 이러한 파일이 필요합니다 :

ln --logical /lib/x86_64-linux-gnu/libnss_dns.so.2 /chroot/lib 

이 계속 실패하면 당신은 strace -e file -fp $(pgrep fpm)

을 실행하여 문제를 디버깅 할 수 있습니다 (우분투? 미래)