带有FastCGI的PHP open_basedir

时间:2012-01-28 20:06:16

标签: 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目录?

1 个答案:

答案 0 :(得分:2)

听起来并不像suEXEC正在使用中,因此FastCGI最有可能以运行Web服务器的同一用户身份运行(apache,nobody,daemon,lighttpd等)。

在这种情况下,FastCGI用户将无权在各种用户目录中创建和写入文件。如果您在其中一个vhost中的“uploads”文件夹上将权限设置为777,则可以将文件保存在那里。需要注意的是,文件将由webserver用户(apache等)拥有,现在vhost用户不会拥有这些文件,也无法修改它们。无论open_basedir如何都是这种情况。如果这是您的专用服务器并且您的所有vhost都是您的,您可以将所有权更改为某些文件/文件夹上的Web服务器的所有权,但是首选使用suEXEC,因为FastCGI会使用vhosts用户编写文件作为所有者。

您仍然会将权限问题复制到另一个vhost,因为它们将由其他用户拥有,但您可以将脚本作为可能性添加到目标用户,或者将所有用户添加到公共用户组,以便他们可以拥有组读/写权限。

suExec是一个更安全的选项,但设置正确可能很复杂。您使用的是Apache,lighttpd还是其他什么?