【问题标题】:Create writable directories创建可写目录
【发布时间】:2012-08-29 08:57:22
【问题描述】:

对于一个项目,我正在实施一个文件上传系统。对于每个用户帐户,我希望脚本创建一个不同的子文件夹。让我们说一下他们的 user_id。

每次添加用户时,系统都会为他们自己的上传创建一个新的子文件夹。例如:

上传/ - 用户1 - 用户2 - 用户3

通过执行 mkdir('Uploads/'.$user_id, 0777);它将创建一个新的子文件夹。一切都很好。

但是我的应用程序无法写入此文件夹。如何让 php make 目录具有所需的文件权限?我尝试使用 chmod 没有成功。

【问题讨论】:

  • 在服务器上,设置umask=022?甚至是 000?
  • 我听说这里使用了umask(0),但我不确定。
  • 创建文件夹的模式是什么?你的这个“应用程序”是从同一个网络服务器上运行的,还是外部/非 PHP 的?
  • 应用程序在同一个网络服务器上运行。我试过 umask(0) 无济于事。

标签: php filesystems chmod mkdir


【解决方案1】:

有时创建的目录不是指定的模式(0755 而不是 0777 等)。 解决这个问题:

<?php 
$old = umask(0); 
mkdir($dir,0777); 
umask($old); 
?>

【讨论】:

    【解决方案2】:

    这可能对chmodmkdir 有所帮助

    $dirMode = 0777;
    mkdir($directory, $dirMode, true);
    
    // chmod the directory since it doesn't seem to work on recursive paths
    chmod($directory, $dirMode);
    

    对于 mkdir,模式在 Windows 上被忽略。默认情况下为 0777。第三个参数是递归的,它允许创建路径名中指定的嵌套目录。

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 2020-11-23
      • 2012-04-12
      • 2013-07-22
      • 2016-06-22
      • 1970-01-01
      相关资源
      最近更新 更多