【问题标题】:mkdir writing permissionsmkdir 写入权限
【发布时间】:2012-07-17 12:05:44
【问题描述】:

我有一个小问题。我已经在堆栈溢出中搜索了类似的东西,但它们似乎没有帮助(据我所知)。

我在php 中使用mkdir,它工作得很好,每个月都会创建一个新目录。但是,我刚刚注意到在月份更改后创建的目录没有写权限。我相信这与使用 0777 来允许最大访问权限有关,但是没有任何变化,我相信这是默认设置的。

代码如下:

if (!is_dir($this->config->item('rootpath').'/assets/documents/'.$date))
{
  $subDirectory = mkdir($this->config->item('rootpath').'/assets/documents/'.$date, 0777);
}
else
  $subDirectory = $this->config->item('rootpath').'/assets/documents/'.$date;

只有在尝试上传文件后,权限被拒绝,我可以去为生成的文件夹设置写权限,然后重新提交文件上传。

【问题讨论】:

  • 这可能与你的umask有关。试试 $oldumask = umask(0); mkdir('你的目录', 0777); umask($oldumask);

标签: php codeigniter mkdir


【解决方案1】:

mkdir 旁边添加正确的权限,如下所示:

$subDirectory = mkdir( $this->config->item( 'rootpath' ) . '/assets/documents/' . $date, 0777 );

【讨论】:

  • 这就是我的意思。我已经从这个开始了,但是我相信如果没有它,它无论如何默认为 0777。即使最后有这个或 0755,文件夹也是以只读方式创建的?
  • 对我个人而言,如果没有显示权限,我会得到 644 + 如果您的文件夹具有 777 权限,那么在其中写入不会有问题。
  • 好吧。但是,假设我的代码现在包含您放置它的确切位置并且没有更改......这就是正在发生的事情。所以我觉得问题出在其他地方......
  • 我已将错误消息设置为在这段代码上显示.... $temp_file_location = $subDirectory.'/'.$thisServerFileName; if (!move_uploaded_file($_FILES["filename"]["tmp_name"], $temp_file_location)) { $body_data['error'][] = "由于权限错误,文件无法移动。";取消链接($_FILES['文件名']['tmp_name']); }
  • 但是当我在创建文件夹后手动去更改权限时,上传就可以了。
猜你喜欢
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2021-10-22
  • 2015-11-01
  • 2016-08-24
  • 2013-07-01
相关资源
最近更新 更多