如果dir不存在,则跳过或制作目录

时间:2016-03-09 06:24:56

标签: php

我正在尝试在连接到不同用户名的目录中打开最新文件。但是,一些用户名没有上传目录,我想跳过这些用户或创建目录无关紧要。这是我目前的代码。

while bool1 or bool2:
    try:
        array1[n].dothing()
    except IndexError:
        bool1 = False
    try:
        array2[n].dothing()
    except IndexError:
        bool2 = False
    n = n+1 

我上传时收到的错误是

 <?php $path =  base_url(''.$value['username']) . '/' . 'uploaded';) 

$latest_ctime = 0;
$latest_filename = '';    

$d = dir($path);

while (false !== ($entry = $d->read())) {
  $filepath = "{$path}/{$entry}";
  // could do also other checks than just checking whether the entry is a file
  if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
    $latest_ctime = filectime($filepath);
    $latest_filename = $entry;
  }
}?>

我尝试搜索并尝试了一些mkdir的东西,我发现它不起作用。甚至是我在stackoverflow上找到的最新文件。

4 个答案:

答案 0 :(得分:1)

如果不存在,如何在php中创建目录。

if (!is_dir('path/to/directory')) {
    mkdir('path/to/directory', 0777, true);
}

我在这里描述你的代码..

    <?php $path =  base_url(''.$value['username']) . '/' . 'uploaded';) 

    $latest_ctime = 0;
    $latest_filename = '';  

    if (!is_dir($path)) {
        mkdir($path, 0777, true);
    }

    $d = dir($path);

    while (false !== ($entry = $d->read())) {
      $filepath = "{$path}/{$entry}";
      // could do also other checks than just checking whether the entry is a file
      if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
        $latest_ctime = filectime($filepath);
        $latest_filename = $entry;
      }
    }
?>

注意:您必须在is_dir()mkdir()函数中传递路径。您无法在这些功能中传递URL。

答案 1 :(得分:0)

在尝试打开目录之前,您应该检查目录是否存在。尝试使用is_dir()之类的:

if (is_dir($path)) {
    $d = dir($path);
} else {
    mkdir($path, 0700);         // Change the permission as you need.
    $d = dir($path);            // Since the folder is being just created you could return
}

如果您希望跳过这些用户,可以将else{}内的代码更改为exit脚本,或者您喜欢的任何内容。

答案 2 :(得分:0)

在PHP中,dir()适用于文件系统,而不适用于URL。您需要使用的内容取决于文件的确切位置以及托管的设置方式。根据信息尝试类似:

$path = '<wwwroot>/pdfs/' . $value['username'] . '/uploaded';

如果Directory对象存在,那么它应该为您提供。如果您不知道您的www root是什么,您可以尝试类似:

$path = __DIR__ . '/pdfs/' . $value['username'] . '/uploaded';

这将基于您正在执行的文件的当前目录。

答案 3 :(得分:0)

您正在尝试从URL中读取目录。您需要将它传递给文件系统中目录的路径。 例如

'/home/your_app/pdfs/' . $value['username']) . '/' . 'uploaded'