带有 FastCGI 的 PHP open_basedir

标签 php linux file-upload fastcgi open-basedir

如果我运行的是 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/

相关文章:

php - 在日志文件中看到可疑错误消息后

php - 正则表达式可选组?

linux - nginx 服务器永远无法解析

xml - 使用 sed 在 xml 上 move 文本

php - 如何停止使用 chmod 或 .htaccess 编辑父目录的 PHP 文件?

mysql - 在mariadb中查询数据时如何包含两个SET语句

file - Extjs4 一键上传文件

android - cordova inappbrowser 和输入文件

iphone - 如何停止从 iPhone 向服务器发送 HTTP 消息

phpUnderControl 和 CodeBrowser