mkdir 不工作

mkdir is not working

mkdir() 对我不起作用。这段代码出了什么问题?

  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);

没有创建目录。我在 Stack Overflow 中搜索了解决方案并应用了其中一些但仍然没有成功。我正在使用 wamp;当我移动上传的图像而不创建目录时,它会移动文件。

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

应该是

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

用户 运行 您的 PHP 脚本(很可能 www-data)应该有在 $output_dir 中创建文件夹的权限,因此您可能需要检查确实如此。

此外,忽略系统调用的 return 值通常是一种不良的编程习惯。 mkdir 将在失败时 return FALSE,您应该对其进行测试,然后确保您的代码在目录创建失败时采取相应的行动...当 mkdir 失败时,它还会记录警告所以你应该能够通过查看你的日志来获得关于实际问题的更多信息(前提是你正在记录警告)。

试试这个,如果不起作用 post 味精。

  <?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/";

尝试像上面那样在 $_SERVER['DOCUMENT_ROOT'] 之后添加一个目录分隔符。

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

mkdir($output_dir, 0777, true);

给予 uploads 文件夹适当的权限,以便 www-data 用户可以遍历它,并给予 uploads/users 子文件夹适当的权限,write 权限。