mkdir无法正常工作

The mkdir() is not working for me. What is going wrong in this code?

  foreach($_FILES['documents']['tmp_name'] as $key => $tmp_name)
 {
   $file_name = $key.$_FILES['documents']['name'][$key];
   $file_size =$_FILES['documents']['size'][$key];
   $file_tmp =$_FILES['documents']['tmp_name'][$key];
   $file_type=$_FILES['documents']['type'][$key];
   $name = $_POST['uname'][$key];
   $email = $_POST['uemail'][$key];
   $password = $_POST['epass'][$key];
   $file_names = time().$file_name;

   $query = "INSERT INTO `table` VALUES
  ('', '$name', '', '', '$email', '$password', 1, '', 1, '', '$file_names',   '$file_names', '', '', '', '', 1, '', '', '1', '')";

   $resultl =  $db->insert($query);

   $userId = mysql_insert_id();

   $output_dir = $_SERVER['DOCUMENT_ROOT']."uploads/users/$userId/";
   mkdir($output_dir, 0777);
   chmod($output_dir, 0777);

The directory is not being created. I searched in Stack Overflow for the solution and applied some of them but still no success. I am using wamp; when I move the uploaded image without creating directory, then it moves the file.

$output_dir = $_SERVER['DOCUMENT_ROOT'] . "/uploads/users/$userId/";

mkdir($output_dir, 0777, true);
mkdir('$output_dir' ,0777) ;
chmod('$output_dir',0777);

should be

mkdir($output_dir ,0777) ;
chmod($output_dir,0777);

The user running your PHP script (most likely www-data) should have the permission to create a folder in $output_dir, so you may want to check that it is indeed the case.

What's more, it's generally a bad programming habit to just ignore the return value of a system call. mkdir will return FALSE on failure, which you should test against and then make sure your code acts accordingly should the directory creation fail... When mkdir fails, it will also log a warning so you should be able to get more information on the actual problem by having a look at your logs (provided you're logging warnings).

Try this and if not working post the msg.

  <?php 
    ....
    $output_dir = $_SERVER['DOCUMENT_ROOT']."/uploads/users/$userId/";
    echo $output_dir;
    $res =  mkdir($output_dir ,0777, true) ;
    var_dump($res);
$_SERVER['DOCUMENT_ROOT']."/uploads/users/$userId/";

Try adding a directory separator after $_SERVER['DOCUMENT_ROOT'] like above.

Give the appropriate permissions to the uploads folder so the www-data user can traverse it, and to the uploads/users subfolder, with the write permission.