nginx + php-fpm chdir 不起作用

nginx + php-fpm chdir 不起作用

我在使 nginx 和 php-fpm 运行时遇到问题。

当我尝试访问我的应用程序时收到错误 504。

我有一个这样的结构;

data/mywebsite/
 |    
 |---revisions/
 |
 |---shared/
 |
 |---released/
       |---web/
       |---app/
       |---.../

在我的 fpm 池中,我有以下内容:

chroot = /data/mywebsite/
chdir = /released/web/

在我的 nginx 中:

root /data/mywebsite/released/web/;

fastcgi_param                  SCRIPT_FILENAME              /web/released$fastcgi_script_name;

所以我想要的是 chrootdata/mywebsite/并让应用程序位于data/mywebsite/released/web/访问共享文件夹中的文件。

注意:我不知道是否值得一提,但我有一个像这样的软链接released -> /data/mywebsite/revisions/...

答案1

当您计划使用 PHP-FPM chroot 时,您需要在 chroot 内部复制相当多的系统文件才能使其正常工作。

例如,您需要/data/mybesite/dev、、/data/mybesite/proc目录/data/mybesite/sys/伪文件系统和其中的文件/data/mybesite/lib等等。

您也不能使用指向 chroot 之外的符号链接。

如果您使用/data/mybesite目录,那么在 chroot 内部使用时,其中chroot的符号链接/data/mybesite/example1/example2/data/mybesite/example2指向目录。/data/mybesite/data/mybesite/example2

我的建议是,除非您愿意花时间了解 chroot 环境的要求,以便在其中运行 PHP-FPM 应用程序,否则不要使用该chroot功能。我为我从事的一个项目做过这项工作,即使使用辅助程序,也花了几天的时间。

相关内容