mkdir()实际上并没有创建目录

时间:2015-02-05 04:40:56

标签: php

基本上,当我单击我的提交按钮时,代码应该创建一个长度为5个字符的随机字符串。然后它应该创建一个文件夹(相对位置),其名称是生成的随机字符串。然后它应该创建一个索引文件并将“content”变量写入该文件。不幸的是它甚至没有制作目录。有帮助吗?我无法弄清楚出了什么问题。

    <?php
            $characters = "abcdefghijklmnopqrstuvwxyz"; // Valid Folder Characters
            if(isset($_POST["submit"])) {
                $folder = randomString($characters, 5);
                $file = fopen($folder . "/index.html", "w");
                $content = "File Content";
                mkdir($folder, 0777);
                fwrite($file, $content);
                fclose($file);
            }
            // Generate Random Folder Name
            function randomString($valid_chars, $length) {
                $random_string = "";
                $num_valid_chars = strlen($valid_chars);
                for($i = 0; $i < $length; $i++) {
                    $random_pick = mt_rand(1, $num_valid_chars);
                    $random_char = $valid_chars[$random_pick - 1];
                    $random_string .= $random_char;
                }
                return $random_string;
            }
        ?>

2 个答案:

答案 0 :(得分:0)

确保您在创建新目录的位置或目录中具有可写权限,并尝试检查

if (!mkdir($folder, 0777, true)) {
    die('Failed to create folders...');
}

你还需要先创建dir然后打开文件

 if(isset($_POST["submit"])) {
     $folder = randomString($characters, 5);
     if (!mkdir($folder, 0777, true)) {
       die('Failed to create folders...');
     }
     $file = fopen($folder . "/index.html", "w");
     $content = "File Content";
     fwrite($file, $content);
     fclose($file);
 }

答案 1 :(得分:0)

试试这个

$oldmask = umask(0);
if(!file_exists($dir)) mkdir($dir, 0777);
umask($oldmask);