【问题标题】:How to create directory with owner permission on LAMP server using PHP?如何使用 PHP 在 LAMP 服务器上创建具有所有者权限的目录?
【发布时间】:2023-03-22 06:43:01
【问题描述】:

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

【问题讨论】:

    标签: php linux shell directory lamp


    【解决方案1】:

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

    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
    

    应该工作,让你的执行官在这种情况下应该成功。

    【讨论】:

      猜你喜欢
      • 2012-04-23
      • 2012-01-17
      • 2020-05-20
      • 2012-06-13
      • 2015-06-13
      • 2012-04-26
      • 2010-10-16
      • 2010-11-23
      • 2012-01-11
      相关资源
      最近更新 更多