由mkdir()创建的文件夹不可访问

时间:2013-12-10 11:53:56

标签: php

我在foreach循环中使用mkdir()来创建我的文件夹:

if (!file_exists($id))
{
    mkdir($id);
}

$id可以是529e1f4070b0c

创建了文件夹,但是当通过FTP或直接从Direct Admin文件管理器访问它们时,我遇到没有这样的文件或目录,当通过浏览器访问时也遇到404 Not found页面。

怎么了?

#Update 1

我已移除foreach循环并手动分配$id,效果良好,文件夹已创建且可访问,但当它位于foreach内时,文件夹已创建但无法访问!

#Update 2

我将代码更改为使用评论中建议的完整路径:

if (!file_exists(dirname(__FILE__)."/".$id))
{
    mkdir(dirname(__FILE__)."/".$id, 0777);
}

这也导致以前的结果!

#Update 3

完整的代码:

$file = file("codes.txt");
foreach ($file as $id)
{
    $html = content_of_url($id);
    if (!file_exists(dirname(__FILE__)."/".$id))
    {
        mkdir(dirname(__FILE__)."/".$id, 0777);
    }
    $dom = new domDocument;
    $dom->loadHTML($html);
    $dom->preserveWhiteSpace = false;
    $images = $dom->getElementsByTagName('img');
    foreach ($images as $i => $img)
    {
        $url = str_replace("../..", "http://domain.com", $img->getAttribute('src'));
        file_put_contents(dirname(__FILE__)."/".$id."/".$i.".jpg", file_get_contents($url));
    }
}

6 个答案:

答案 0 :(得分:0)

使用以下

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

假设您正在'ID FOLDER'文件夹中创建文件夹

然后指定路径

if (!is_dir('ID FOLDER'.$id))
{
    mkdir('ID FOLDER'.$id,0777);
}

答案 1 :(得分:0)

尝试设置权限:)并设置recursive = true

$path = "folder/path/where/files/should/be/stored/";
mkdir($path , 0777, true);

不要给它带文件名...首先创建路径,而不是文件

$handle = fopen( $path . "\ressource.txt", "r");

您可能需要替换/用\\

答案 2 :(得分:0)

更改权限,这可能会有所帮助

答案 3 :(得分:0)

尝试在Windows下使用反斜杠或在路径中使用常量DIRECTORY_SEPARATOR。此外,您可以尝试更改权限。

答案 4 :(得分:0)

您需要为“非apache”用户访问的文件夹设置权限。 使用chmod指令。 http://www.php.net/chmod

答案 5 :(得分:0)

创建文件夹后,尝试使用chmod()更改文件夹权限。