PHP-FPM的chroot和chdir目录

我设置启用了chroot的php-fpm。 现在我看到有两种select,我想知道确切的区别是什么。

该设置有:

chroot = /var/www/domains/domain.tld/ ; Chdir to this directory at the start. This value must be an absolute path. ; Default Value: current directory or / when chroot chdir = /docroot/ 

为什么在这里有两个不同的位置,哪个path是PHP允许访问。 php网站可以访问/var/www/domains/domain.tld/ ,还是只能访问docroot目录下的文件。

===

也许对我有一些具体的build议。 我想有一个像这样的设置:

webroot位置: /var/www/

 domain.com/ |---conf/ | |--nginx.conf | |--php-fpm.conf | |---ssl/ |---logs/ |---session/ |---domains/ |---www/ |---app/ |---dev/ 

现在这里的PHP-FPM设置将是:

 chroot = /var/www/domain.com/ chdir = /domains/www 

现在这里的主要问题是位于www子域的应用程序能够访问devapp的文件。 甚至是位于session(会话保存path)中的文件,或者其他文件夹(如ssl和日志)。

  • Chroot设置“根”目录 – 你不能在根目录之上导航。
  • Chdir只是简单地改变起始目录 – 仍然可以导航到其他目录(包括上面的目录)。
    • 如果你不指定一个chrootpath,那么“真正的”根用于 – 你指定一个绝对的chdir。
    • 如果你指定了一个chrootpath,那么你可以指定一个相对于chroot'dpath(重新定义根目录)的path。

你提出的设置似乎相当好。

  • 起始path将是chrootpath+ chdirpath
  • 该应用程序将能够访问chrootpath下的所有文件(除非有其他限制 – 例如php_openbasedir,权限等)。

作为一个方面说明 – 你的php应用程序也可以根据你所显示的文档结构访问你的nginx.conf和php-fpm.conf – 这看起来像你可能想要改变的东西(至less让文件只读)只有该用户)。