运行debain LAMP的专用Linux服务器。
我运行一个PHP脚本(使用浏览器),它在同一台服务器上的文件夹中创建一个目录(和各种子目录),以便随后使用Dropbox共享使用。
目录在/home/dropbox/New_Project_Name/new_folders
中创建,并且应由用户'dropbox'拥有。
但是,运行php脚本会导致脚本生成的新创建的目录归'www-data'
所有
从浏览器运行php脚本以便生成具有用户和组“dropbox”所有权的新目录或随后运行脚本以检查www-data所有权和递归更改文件的最佳原因是什么?目录到'dropbox'
非常感谢您的帮助。
答案 0 :(得分:1)
好的 - 终于让这个工作了(谢谢大家)但是将以下内容添加到我的 / etc / sudoers
www-data ALL=(ALL) NOPASSWD: /bin/chown, /home/sites/public_html/change_owner.php
PHP文件的内容与DasSaffe的答案相同
答案 1 :(得分:0)
未经过测试,但在创建文件夹后,您可以运行另一行代码来更改所有者/组
// define user and group
$owner = "dropbox";
$group = "dropbox";
$folder = "/home/dropbox/New_Project_Name/new_folders";
// change the owner and group
chown($folder, $owner);
chgrp($folder, $group);
请记住,它可能会引发错误,因为存在子文件夹并且操作失败。 while循环应该可以解决问题。
权限可能存在问题,直至server-config
还有另一种方法可以使用" exec"以递归方式运行它。命令。
你可以这样:exec("chown -R ".$owner.":".$group." ".$folder);
这将更改文件夹和所有子文件夹的用户和组。但要注意, 使用系统是危险的"。您可以运行任何shell命令。不要玩太多。
答案 2 :(得分:0)
以下是3个选项:
sudo chown -R dropbox /path/to/dir
,然后只使用php的exec
函数。