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

时间:2011-10-08 04:11:41

标签: php linux permissions

不确定这是php配置还是linux文件权限问题。我遇到的问题是当一个文件通过php使用move_uploaded_file()上传到 group 设置为 ubuntu owner 的目录中时设置为 www-data ,上传的文件所有者权限更改为 www-data ,这会导致问题我的python脚本进来并在上传的文件上执行任务。

示例:

move_uploaded_file($tempFile,$targetSAVE);

- $ targetSAVE目录设置为:

group: ubuntu
owner: www-data
permissions: 0755

- php上传文件将所有者更改为 www-data

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 

3 个答案:

答案 0 :(得分:3)

找到解决方案。把我的头发拉出来并尝试所有其他反应之后,事实证明这很简单。

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

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

答案 1 :(得分:1)

这种情况正在发生,因为PHP作为运行Web服务器的用户运行。实际上,您系统上的所有网站都将作为此用户/组运行,因此所有网站都可以访问由php脚本创建的彼此的文件和目录。

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

或者,您应该能够将脚本中的文件chown到相应的用户/组,但效果将是Web服务器在您更改其所有权后不再能够读取/编辑这些文件。

答案 2 :(得分:0)

我想我只是在PHP脚本的末尾添加一个chirp指令,如果它适用于您的情况。 http://us.php.net/manual/en/function.chgrp.php

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

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