创建目录问题

时间:2014-03-05 20:14:55

标签: php html-form

你可以帮我解决这个问题吗? 我有这个:

<form action="setari_cont.php" method="POST" enctype="multipart/form-data">
<img src="img/defaultavatar.jpg" width="70"/>
<input type="file" name="profilepic" id="profilepic"><br><br>
<input type="submit" name="uploadpic" value="Upload">
</form>

和这个

if(isset($_FILES['profilepic']))
{
    if(($_FILES["profilepic"]["type"]=="image/jpeg") ||
       ($_FILES["profilepic"]["type"]=="image/png") || 
       ($_FILES["profilepic"]["type"]=="image/gif"))
    {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $rand_dir_name = substr(str_shuffle($chars), 0, 15);
        mkdir('userdata/photos/$rand_dir_name');
    }
    else
    {
        echo 'Here is the problem';
    }
}

但它不会创建目录。两者都在相同的.php脚本中,所以......问题出在哪里?提前谢谢!

SOLVED!!!!!!!This form was inside another form!

4 个答案:

答案 0 :(得分:0)

您需要将$ rand_dir_name置于引号之外或双引号中:

mkdir('userdata/photos/'.$rand_dir_name);

mkdir("userdata/photos/$rand_dir_name");

答案 1 :(得分:0)

而不是这样做

mkdir('userdata/photos/$rand_dir_name');

你需要做

mkdir('userdata/photos/' . $rand_dir_name);

否则会尝试创建一个名为“$ rand_dir_name”的目录,我猜这个目录无效,因为它无效

答案 2 :(得分:0)

我认为您在mkdir中的变量存在问题。它应该是:

mkdir('userdata/photos/'.$rand_dir_name);

答案 3 :(得分:0)

出于调试目的,请输入

ini_set('display_errors', 1);高于一切。

要注意的几件事情:

  • 此文件与您要创建目录的位置之间是否存在目录?
  • 是服务器可写的目录吗? (如果没有,你会得到一个拒绝许可的错误)
  • 如果要以递归方式创建目录(创建所需的全部内容),则需要使用mkdir( $path, 0777, true );

在您的情况下,它将是mkdir( "userdata/photos/{$rand_dir_name}", 0777, true);

双引号很重要,因为那时php可以评估里面的表达式。 {}很重要,因为这表示内部有待评估的内容。 0777是mkdir中的权限的默认值(如果省略,则使用),true告诉mkdir创建临时文件夹。

参考文献: