如何使用PHP在LAMP服务器上创建具有所有者权限的目录?

时间:2018-09-26 09:14:02

标签: php linux shell directory lamp

我目前在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成为所有者。

1 个答案:

答案 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

应该起作用,并且在这种情况下让您的执行成功。