我正在设置启用 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 和日志。
我正在努力完成在 php-fpm 上实现 chroot 的最后一步,Apache 2.4 在 CentOS 7 上运行。
我已经成功设置并测试了没有 chroot 的 php-fpm 连接。但是,一旦我将 chroot 指令添加到 /etc/php-fpm.d/file.conf 中的 conf 文件中,我就会得到一个“找不到文件”的消息,正如许多其他人所经历的那样。
这是我的 php-fpm conf 文件:
[site1.com]
user = user1
group = user1
listen = /var/run/php-fpm/site1.com.sock
listen.owner = user1
listen.group = user1
php_admin_value[disable_functions] = exec,passthru,shell_exec,system
php_admin_flag[allow_url_fopen] = on
php_admin_value[short_open_tag] = On
php_admin_value[doc_root] = /
php_admin_value[error_log] = /logs/php-errors
php_admin_flag[log_errors] = on
pm = ondemand
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3 …
Run Code Online (Sandbox Code Playgroud)