2015-02-06 87 views
-1

我想创建一个新的目录来处理配置文件图片,但每次我上传图片时,没有任何反应,因为在新目录中没有创建,并且没有任何错误。我已经检查了Apache的错误日志,却没有注意到有关我最近的代码的任何错误......PHP mkdir不会创建新目录

这里是我的代码

//profile image upload script 
    if (isset($_FILES['profile_pics'])) { 
     if (((@$_FILES["profile_pics"] ["type"] == "image/jpeg" || (@$_FILES["profile_pics"] ["type"] == "image/png") || (@$_FILES["profile_pics"] ["type"] == "image/gif")) && (@$_FILES["profile_pics"] ["size"] < 1048576))) // LESS THAN ONE MEGABYTE 

     { 
      $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; 
      $rand_dir_name = substr(str_shuffle($chars), 0, 15); 
      mkdir("userdata/profile_pics/$rand_dir_name"); 




     else { 

     } 

}}

+2

请在文件顶部添加错误报告:'<?php \t \t ini_set(“display_errors”,1); \t \t error_reporting(E_ALL); \t?>'告诉我们错误。同时检查允许您创建新子目录的目录的权限 – Rizier123 2015-02-06 17:08:17

+2

确保您在其中创建新目录的目录具有适当的权限 – Nick 2015-02-06 17:09:22

+0

可能对您有所帮助:http://stackoverflow.com/questions/7101840/ mkdir-failed-creating-directory-php?rq = 1 http://stackoverflow.com/questions/13908722/php-unable-to-create-a-directory-with-mkdir?rq=1 – 2015-02-06 17:10:22

回答

1

样本您有多个PHP中的错误,你确定你没有看到你的Apache日志中的任何致命错误?

  • if查询不正常关闭
  • else声明缺少托槽
  • 你抑制任何错误与@ - 删除!
  • 使用绝对路径,而不是相对路径,以避免在你创建的目录

下面错误的位置就是它应该如何看一个例子:

// array of valid image types 
$valid = array('image/jpeg', 'image/png', 'image/gif'); 

if (isset($_FILES['profile_pics'])) { 

    // if the file type is in the valid array and the size is less than 1MB 
    if (in_array($_FILES['profile_pics']['type'], $valid) 
     && ($_FILES["profile_pics"]["size"] < 1048576)) 
    { 
     $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; 
     $rand_dir_name = substr(str_shuffle($chars), 0, 15); 
     mkdir($_SERVER['DOCUMENT_ROOT'] . "/userdata/profile_pics/$rand_dir_name"); 

    } else { 
     print('too big or not an image.'); 
    } 
} 

编辑

您还应该检查mkdir的回应..像这样:

$ok = mkdir($_SERVER['DOCUMENT_ROOT'] . "/userdata/profile_pics/$rand_dir_name"); 

    if(!$ok) 
    { 
     print('error creating directory, check your permissions'); 
    } else { 
     print('created directory successfully!'); 
    } 
+0

你还缺少'if(in_array($ _ FILES ['profile_pics'] ['type'],$ valid) ' – 2015-02-06 17:22:53

+0

@ Fred-ii-看起来对我来说......如果陈述是在两行上,使OP更容易阅读..也许这就是混乱(注意'&&') – 2015-02-06 17:24:48

+0

好吧,我的错误Danny。 '&&' - 正是它在我的IDE中输入的方式 – 2015-02-06 17:26:32

0

尝试添加权限。

mkdir(“/ path /”,0755);