mkdir无法正常工作

时间:2015-07-07 06:48:06

标签: php directory mkdir

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;当我移动上传的图像而不创建目录时,它会移动文件。

6 个答案:

答案 0 :(得分:3)

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

更重要的是,忽略系统调用的返回值通常是一种糟糕的编程习惯。如果失败,mkdir将返回FALSE,您应该对其进行测试,然后确保您的代码在目录创建失败时采取相应行动...当mkdir失败时,它也会记录警告,因此您应该能够通过查看日志获得有关实际问题的更多信息(前提是您正在记录警告)。

答案 1 :(得分:1)

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

应该是

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

答案 2 :(得分:1)

尝试此操作,如果没有工作,请发布消息。

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

答案 3 :(得分:1)

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

尝试在$ _SERVER [&#39; DOCUMENT_ROOT&#39;]之后添加目录分隔符。

答案 4 :(得分:1)

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

mkdir($output_dir, 0777, true);

答案 5 :(得分:0)

uploads文件夹授予适当的权限,以便www-data用户可以使用uploads/users权限遍历该文件夹和write子文件夹。