gpt4 book ai didi

php - Chrooted PHP-FPM脚本过一会儿无法解析DNS

转载 作者:行者123 更新时间:2023-12-02 11:27:16 25 4
gpt4 key购买 nike

我需要一些帮助,以了解为什么在PHP-FPM服务启动后的几分钟内,PHP-FPM chroot的PHP脚本无法解析FQDN。

当我(重新)启动PHP-FPM服务时,它会工作(解析成功)几秒钟,然后解析失败。

我通过PHP-FPM(在PHP-FPM池配置文件中设置``chroot`)chroot了一个PHP应用程序(实际上是一个WordPress),并为PHP提供了所需的东西:

  • 基本的/etc/hosts文件
  • /etc/ssl/certs的mount --bind
  • /dev/urandom(通过mknod)
  • /usr/share/zoneinfo的mount --bind
  • /var/run/mysqld的mount --bind,用于MySQL的套接字。
  • 用于nscd解析程序的套接字的/var/run/nscd的mount --bind
  • 一个存储PHP session 的地方

  • 当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()实现解析FQDN的?
  • 在chroot设置中,gethostbynamel()需要什么?
  • 什么使它只能工作片刻?

  • 软件版本:
  • Debian 9
  • Nginx 10.3
  • PHP 7.0.19

  • 谢谢

    最佳答案

    根据对问题Chrooted PHP-FPM script cannot resolve DNS after a moment的评论,OP可以通过将以下文件添加到 jail 来解决此问题:

  • /lib/x86_64-linux-gnu/libnss_dns.so.2(或取决于OS变体/lib/libnss_dns.so )
  • /etc/nsswitch.conf
  • /etc/resolv.conf
  • 关于php - Chrooted PHP-FPM脚本过一会儿无法解析DNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47915774/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com