PHP-FPM 的 chroot 和 chdir 目录

Sai*_*han 13 chroot php-fpm

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

设置有:

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/
Run Code Online (Sandbox Code Playgroud)

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

===

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

网络根位置: /var/www/

domain.com/
 |---conf/
 |    |--nginx.conf
 |    |--php-fpm.conf
 |
 |---ssl/
 |---logs/
 |---session/
 |---domains/
       |---www/
       |---app/
       |---dev/
Run Code Online (Sandbox Code Playgroud)

现在这里的 php-fpm 设置将是:

chroot = /var/www/domain.com/
chdir  = /domains/www
Run Code Online (Sandbox Code Playgroud)

现在这里的主要问题是,位于www子域中的应用程序是否能够访问dev或 中的文件app。甚至位于会话中的文件,即会话保存路径,或其他文件夹,例如 ssl 和日志。

cyb*_*x86 14

  • Chroot 设置“根”目录 - 您不能在根目录上方导航。
  • Chdir 只是更改起始目录 - 仍然可以导航到其他目录(包括上面的目录)。
    • 如果您不指定 chroot 路径,则应用“真实”根目录 - 并且您指定绝对 chdir。
    • 如果您确实指定了 chroot 路径,则指定相对于 chroot 路径(重新定义根目录)的路径。

您提出的设置似乎很好。

  • 起始路径将是 chroot 路径 + chdir 路径
  • 该应用程序将能够访问 chroot 路径下的所有文件(除非有其他限制 - 例如 php_openbasedir、权限等)。

作为旁注 - 您的 php-application 还可以根据您显示的文档结构访问您的 nginx.conf 和 php-fpm.conf - 这似乎是您可能想要更改的内容(至少使文件读取-仅限该用户)。