如果我运行的是 fastCGI,在我的服务器上使用 open_basedir 将文件从一个域移动到另一个域时会遇到问题吗?
我想从以下位置移动上传的文件:
/var/www/vhosts/example-1.com/httpdocs/
到:
/var/www/vhosts/example-2.com/httpdocs/
假设用户将特定于所使用的域,FastCGI 是否允许这样做?因此对于 example-1.com,用户将是 example-1。如果我定义 open_basedir 指令,该用户是否能够将文件移动到 example-2 目录?
最佳答案
这听起来不像是在使用 suEXEC,因此 FastCGI 很可能会以运行 Web 服务器的同一用户(apache、nobody、daemon、lighttpd 等)运行。
在那种情况下,FastCGI 用户将没有权限在各个用户目录中创建和写入文件。如果您将其中一个虚拟主机中的“上传”文件夹的权限设置为 777,那么它可以将文件保存在那里。需要注意的是,这些文件将归网络服务器用户(apache 等)所有,现在虚拟主机用户将不拥有这些文件,也无法修改它们。无论 open_basedir 是什么情况都是如此。如果这是您的专用服务器并且您所有的虚拟主机都是您的,您可以将某些文件/文件夹的所有权更改为网络服务器的所有权,但最好使用 suEXEC,因为在这种情况下 FastCGI 将使用虚拟主机用户写入文件作为所有者。
将文件复制到另一个虚拟主机时,您仍然会遇到权限问题,因为它们将由不同的用户拥有,但是您可以让脚本将它们 chown 给目标用户,或者将所有用户添加到一个公共(public)组,以便他们可以获得组读/写权限。
suExec 是一个更安全的选项,但正确设置起来可能很复杂。您使用的是 Apache、lighttpd 还是其他软件?
关于带有 FastCGI 的 PHP open_basedir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9048174/