不确定这是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
答案 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。
来自文档的说明:“只有超级用户可以任意更改文件组;其他用户可以将文件组更改为该用户所属的任何组。”