【问题标题】:mkdir is not workingmkdir 不工作
【发布时间】:2015-09-24 12:44:04
【问题描述】:

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 的值。检查网络服务器是否有权在此处创建新目录。
  • 我已经回应了同样正确的 $output_dir,我从过去四个小时开始尝试这个仍然无法得到我在做什么错?

标签: php directory mkdir


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    $output_dir = $_SERVER['DOCUMENT_ROOT'] . "/uploads/users/$userId/";
    
    mkdir($output_dir, 0777, true);
    

    【讨论】:

      【解决方案3】:
      mkdir('$output_dir' ,0777) ;
      chmod('$output_dir',0777);
      

      应该是

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

      【讨论】:

      • 你已经放了递归,比如mkdir($output_dir ,0777, true) ;
      【解决方案4】:

      试试这个,如果不起作用,请发布消息。

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

      【讨论】:

      • 上传文件夹权限未设置
      【解决方案5】:
      $_SERVER['DOCUMENT_ROOT']."/uploads/users/$userId/";
      

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 2011-03-07
          • 2013-09-19
          • 2017-07-30
          • 1970-01-01
          • 1970-01-01
          • 2016-11-30
          • 2016-01-28
          • 1970-01-01
          • 2012-09-16
          相关资源
          最近更新 更多