与chrooting php-fpm一起带来的影响

我正在创build一个将使用php-fpm运行nginx的生产服务器。 我想在保护服务器和保持良好的快速工作stream程之间保持良好的结合。

现在有一件事情总是确保系统是chroot。 现在我已经读了很多关于这个,而chroot的nginx是相当复杂的。

据说使用php-fpm构build的chroot函数是一种很好的方法。我阅读了几个指南,解释了如何设置它,但是我还没有读到它带来的影响。 我甚至读到,没有。

那么,我得到的第一个问题是与时间有关的。 解决scheme是将/etc/localtime和文件夹/usr/share/zoneinfo复制到chroot目录中。

没有任何指南告诉你,这是你注意到的第一个错误。

现在我遇到了file_get_contents ,我得到以下错误:

未能打开stream:php_network_getaddresses:getaddrinfo失败:名称或服务未知

我想解决scheme是将更多的文件添加到chroot中。 我真的不想为我开发的每个网站做这个。

现在是chroot的情况,甚至在php-fpm中,或者我做错了什么。 有什么我必须让一切工作,或者我应该把所有的东西都移动到目录。

是的,你需要在chroot目录下有一个基本的function文件系统。 不,你不应该移动(或链接)所有的东西 – 这将很好地击败chroot的全部目的。

本质上,需要在chroot中存在的资源是服务器在运行时需要访问的资源 – 任何dynamic加载的库,日志目录和服务器所需的任何支持结构。

在这种情况下,你缺less基本的名称parsingconfiguration – /etc/resolv.conf ,和/lib nss / dns / resolv相关的东西将是一个好的开始。

如果可以在服务器上运行nscd ,则复制resolving-libs/ etc-files并不是必须的。

其基本思想是将nscd的Unix域套接字(通常是/ var / run / nscd / socket)绑定到chroot中。 (e)glibc会尝试联系它来parsing用户名,主机名等。只有在nscd没有运行时,(e)glibc会自行解决问题。

在我的博客文章中可以find关于在chroot中运行PHP时可能需要解决的更多细节。