PHP-FPM chroot 与 chdir

PHP-FPM chroot 与 chdir

我正在尝试在 PHP-FPM chroot 中设置一个站点。我的路径如下:

chroot = /var/www/
chdir = www/

无需 chdir,chroot 也能正常工作。但是当我添加 chdir 时,php-fpm 启动时出现此错误:

ERROR: [pool www] the chdir path '/usr/www/' within the chroot path '/var/www/' ('/var/www///usr/www/') does not exist or is not a directory

有人知道为什么它会附加/usr/到 chdir 路径吗?有没有办法将其从该路径中删除?

此外,如果我将 chdir 路径更改为/www/,我必须浏览到http://localhost/www/filename.php才能查看我的文件。chdir 的意义不就是让这一步变得不必要吗?

答案1

您是否已为 PHP 准备了合适的 chroot?

简单地设置一个任意目录是不够的 - 您实际上需要构建 chroot 并确保它包含所有必要的库、设备和二进制文件。

否则,DNS 解析等基本功能将无法正常工作,您将遇到随机错误、挂起或应用程序段错误。听起来您误认为open_basedirchroot 的简单性。

首先,这个脚本一旦定制,就会为您提供 chroot 的基础。

http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh

但实际上,如果你对 chroot 没有太多经验...

  1. 如果设置不正确,它可能不会比正常情况更安全
  2. 它可能比正常情况更不安全,如果设置不正确,可能会允许 root 权限升级
  3. 你可能会遇到随机问题,这些问题会随着时间的推移困扰你的应用程序,而这一切都是由构建不良的 chroot 引起的

我猜安全是你的目标,但你很可能会得到完全相反的结果。

答案2

昨晚从 phpfreaks IRC 获得了帮助。这是 Apache 方面的问题,我需要它将“/www”发送到 PHP-FPM。

相关内容