我目前在Bitnami LAMP Stack上运行PHP应用程序。我正在创建一个目录来存储文件。代码如下:-
$directory = "../data/folder";
if (!is_dir($directory)) {
$owner = "bitnami";
$group = "bitnami";
mkdir($directory, 0777, TRUE);
exec("sudo chown -R ".$owner.":".$group." ".$directory);
}
在服务器上创建目录时,所有者/组是守护程序/守护程序。我希望创建目录时的所有者和组应该是bitnami / bitnami。我尝试了sudo chown命令的runnig,但是它似乎没有用。当我从shell运行同一命令时,该命令使bitnami成为所有者。
请告诉我在PHP创建目录时是否有可能让bitnami成为所有者。
答案 0 :(得分:0)
运行此代码时的当前用户是守护程序。
exec尝试将命令行sudo命令作为守护程序运行,该守护程序很可能没有设置或要求输入密码。首先,我想说php具有chown(http://php.net/manual/en/function.chown.php),但是只有超级用户才能运行该命令,并且我假设实例不是超级用户运行的。
在将用户添加到同一组以处理权限问题的历史中,我看到了一些建议。另一个选项是设置sudoers文件(/ etc / sudoers),以允许守护程序无需密码即可运行chown。我对如何更新此信息不是很了解,但是从https://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt这样的东西开始
daemon ALL = (root) NOPASSWD: /usr/bin/chown
应该起作用,并且在这种情况下让您的执行成功。