php安装dns解析,DNS解析在php chroot中

我创建了一个脚本,它创建了一个chroot并设置了php-fpm和apache2来使网站正常工作.

在我的脚本中,我使用以下方法将所有必需的lib复制到我的chroot lib(s)dir(s):

fileArray=$(ldd /usr/bin/php* 2>/dev/null | awk 'NF == 4 {print $3}; NF == 2 {print $1}' | sort -u)

for file in $fileArray

do

dirName="$(dirname $file)"

[ ! -d "$serverDir$dirName" ] && mkdir -p "$serverDir$dirName" || :

cp $file "$serverDir$dirName"

done

但我看到如果我使用这样的小脚本:

print_r(gethostbynamel("google.com"));

?>

除非libs中有libnss_dns.so.1,否则它无法解析.

现在我的问题是:我需要’ldd’将libnss_dns复制到我的chroot中的文件是什么?

PS:我不想手动复制它,因为我希望我的脚本是跨架构的.

解决方法:

没有可以提供给ldd的选项,也没有可以调用的ldd功能,使其在要复制的库列表中包含libnss_dns.so.1.该库是在运行时动态加载的,因为与动态链接器无关的配置文件的内容(即/etc/nsswitch.conf)和ldd根本无法知道程序可能或可能不会在此动态加载的库.办法.

您会发现可能会有一大堆其他文件需要手动复制以生成工作chroot:从/ dev / null到语言环境配置的所有内容,具体取决于您使用的内容.

PS: I don’t want to copy it manually because I want my script to be cross architecture.

不幸的是,正确使用chroot本身就是一种非便携式的东西.也就是说,没有标准的API可用于设置一个.

(我认为你并不是指“交叉架构”:假设你有一个工作程序来设置一个chroot,比如SPARC,完全相同的程序应该可以正常工作,比如x86_64,给定相同的操作系统.)

您可能会尝试使用debootstrap之类的东西来设置新的chroot.至少它与包管理器绑定,因此它确保存在所有依赖项.即使这样,debootstrap确实会将一些系统文件(例如/ etc / fstab)保留为某种TODO状态.

标签:php,libraries,chroot

来源: https://codeday.me/bug/20190816/1671737.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值