首页 > 解决方案 > 如何使用 PHP 在 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);
}

在服务器上创建目录时,所有者/组是 daemon/daemon。我希望创建目录时的所有者和组应该是 bitnami/bitnami。我尝试运行 sudo chown 命令,但它似乎不起作用。当我从 shell 运行相同的命令时,该命令使 bitnami 成为所有者。

请让我知道在 PHP 创建目录时是否可以让 bitnami 成为所有者。

标签: phplinuxshelldirectorylamp

解决方案


运行此代码时的当前用户是守护进程。

exec 尝试运行命令行 sudo 命令,作为很可能未设置或要求输入密码的守护进程。我首先要注意的是,php 有 chown ( http://php.net/manual/en/function.chown.php ),但是只有超级用户可以运行该命令,并且我假设实例不是 beeing由超级用户运行。

通过将用户添加到同一组以处理权限问题的历史,我看到了一些建议。另一种选择是设置 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

应该可以工作,并让您的执行官在这种情况下应该成功。


推荐阅读