当php上传文件时,组和所有者权限是错误的

问题描述:

不知道这是一个PHP配置还是linux文件权限问题。时遇到的问题是,当一个文件是通过使用PHP move_uploaded_file()以成具有集到的ubuntu所有者集到WWW的数据,上传的文件所有者和目录上传权限更改为www-data这会导致我的python脚本出现问题,并在上​​载的文件上执行其任务。当php上传文件时,组和所有者权限是错误的

例如:

move_uploaded_file($tempFile,$targetSAVE); 

- $ targetSAVE目录设置为:

group: ubuntu 
owner: www-data 
permissions: 0755 

--php上传文件更改所有者www数据

new file changes to: 
    group: www-data <-- need this set to *ubuntu* 
    owner: www-data 
    permissions: 0755 

--python脚本需要的组上传的文件设置为Ubuntu的

我该怎么配置PHP来设置所有权或上传文件的组Ubuntu的或者如果这是一个linux文件权限问题如何我能解决这个问题吗?

所有目录和子目录设置为: 组:Ubuntu的 业主:Ubuntu的 权限:0755 除了的文件被上传到该目录,这是设置为:

group: ubuntu 
owner: www-data 
permissions: 0755 

找到解决方案。把我的头发拉出来,尝试所有其他的反应后,结果很简单,这是有用的。

chown -R ubuntu:www-data /var/www/ 
chmod -R 775 /var/www/ 

之后,python脚本从php执行完美。

我想我只是在PHP脚本的末尾添加一条chirp指令,如果这可以在你的情况下工作。 http://us.php.net/manual/en/function.chgrp.php

查看/ etc/passwd以获取“ubuntu”用户的数字ID。

来自文档的注意事项:“只有超级用户可以任意更改文件组;其他用户可以将文件组更改为该用户所属的任何组。

发生这种情况是因为PHP以运行Web服务器的用户身份运行。实际上,系统中的所有网站都将以该用户/组的身份运行,因此所有网站都可以读取彼此的php脚本创建的文件和目录。

安装Apache mod suPHP可能是解决此问题的最简单的解决方案。这将允许您在特定的用户和组中运行虚拟主机中的php脚本。您也可以将PHP作为CGI运行并使用Apache suEXEC,但设置suPHP会稍微复杂一些。

或者,您应该能够将脚本中的文件转换为适当的用户/组,但效果将是,一旦您更改了这些文件的所有权,Web服务器就不能再读取/编辑这些文件。