我正在尝试在连接到不同用户名的目录中打开最新文件。但是,一些用户名没有上传目录,我想跳过这些用户或创建目录无关紧要。这是我目前的代码。
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上找到的最新文件。
答案 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'