授予php创建文件的权限,但没有权限错误
在PHP中使用授予php创建文件的权限,但没有权限错误,php,nginx,ubuntu-14.04,Php,Nginx,Ubuntu 14.04,在PHP中使用move\u uploaded\u file()函数时,我发现错误: 警告:移动上载的文件(…):无法打开流:在中的权限被拒绝 在我的服务器上,我有如下public\u html权限: drwxr-sr-x 7 user www-data 4096 Apr 27 17:48 public_html 它递归地通过目录 你知道为什么这可能不起作用吗?或者我能做些什么来帮助我找出为什么这不起作用 系统 服务器实际上是一个集群,其中文件位于NAS上,php位于集群上。我正在NAS设备上
move\u uploaded\u file()
函数时,我发现错误:
警告:移动上载的文件(…):无法打开流:在中的权限被拒绝
在我的服务器上,我有如下public\u html
权限:
drwxr-sr-x 7 user www-data 4096 Apr 27 17:48 public_html
它递归地通过目录
你知道为什么这可能不起作用吗?或者我能做些什么来帮助我找出为什么这不起作用
系统
服务器实际上是一个集群,其中文件位于NAS上,php位于集群上。我正在NAS设备上执行所有权限命令,因为用户的FTP将在该设备上执行。首先,SUID和SGID仅在与可执行文件一起使用时才有意义 发件人: SUID(设置用户ID)位 […]如果我有一个所有者为“root”的应用程序,并且它设置了SUID位,那么当我以普通用户的身份运行该应用程序时,该应用程序仍将以root用户的身份运行。因为SUID位告诉Linux用户ID root是为这个应用程序设置的,所以每当这个应用程序执行时,它必须像root用户执行它一样执行(因为root用户拥有这个文件) SGID(设置组ID)位 与SUID一样,设置文件的SGID位可以在文件执行时将组ID设置为文件的组。如果您有一个真正的多用户设置,用户可以访问彼此的文件,那么它非常有用。作为一个家庭用户,我还没有发现SGID有多大用处。但基本概念与SUID相同,设置了SGID位的文件将被使用,就好像它们属于该组,而不仅仅属于该用户一样 因此,如果您的web文件都不需要作为正常进程执行,那么最好不要使用SGID 最后,如果您没有更改web服务器的安全上下文,它(很可能,因为您没有提到任何路径)会尝试移动位于目录
www data
只能读取的文件。要移动文件,您需要对文件所在和将要移动到的目录具有写访问权限。所以www数据
应该被授予对
/tmp
,在这种情况下无需执行任何操作)用户www数据无法写入公共\u html目录。在公共html上使用chmod授予www数据写入权限:
chmod 775 public_html -R
您没有在错误中给出路径,因此请查看php.ini或其他ini文件中的
upload\u tmp\u dir
和sys\u temp\u dir
。您实际上是在上载文件还是只是试图移动现有文件?upload\u tmp\u dir
已被注释掉(因此使用默认设置),是否需要创建它?当我echo sys_get_temp_dir()时
I get/tmp
sys\u temp\u dir
在php中找不到。我可以发誓我已经试过一百万次了!!但这似乎奏效了。这是我第一次在实际的群集而不是NAS上执行此操作。。。你认为这与此有关吗?