2017-07-31 59 views
1

当我将文件提交到我的文件目录,我得到这样PHP - 的mkdir文件错误

警告不少误区:)的mkdir(:C中没有这样的文件或目录:\ wamp64(!) \在线WWW \ MT \ directory.php 38

警告(!):move_uploaded_file(devPacks/peopl39e_8503_cheese/0kk/1501471127_adc9ebd871a68b573fd928ebff5bb54b.png):未能打开流:C中没有这样的文件或目录:\ wamp64 \ WWW \ MT \ directory.php在线40

从目录中。我认为这个问题是在这行代码

$dir = "devPacks/" .$fullname."_".$userid."_".$username."/".$packname; 

,因为当我排除“$ PACKNAME”像这样

$dir = "devPacks/" .$fullname."_".$userid."_".$username."/".$packnames; 

通知我添加了一个“S”,以packnames的发送*和我得到这个

通知(!):未定义的变量:packnames在 C:\ wamp64 \ WWW \上线MT \ directory.php 35

当我回应目录出我得到这个“devPacks/peopl39e_8503_cheese/ ”。所以我不确定发生了什么,但这里是我的代码。

PHP

<?php 
if($_SERVER['REQUEST_METHOD'] =="POST"){ 
    $currentDirectory = getcwd(); 
    $userid = "8503"; 
    $fullname = "peopl39e"; 
    $username = "cheese"; 
    $packname = "0kk"; 
    foreach($_FILES['file']['tmp_name'] as $key => $error){ 
     if ($error != UPLOAD_ERR_OK) { 
      $errors[] = $_FILES['file']['name'][$key] . ' was not uploaded.'; 
      continue; 
     } 
     $file_tmp = file_get_contents($_FILES['file']['tmp_name'][$key]); 
     //keep only A-Z and 0-9 and everything else KILL 
     $file_name = preg_replace("/[^a-z0-9\.]/", "_", strtolower($_FILES['file']['name'][$key])); 
     $file_name = strtotime("now")."_".$file_name; 
     $allowed = array('gif','png' ,'jpg'); 
     $ext = pathinfo($file_name, PATHINFO_EXTENSION); 
     if(!in_array($ext,$allowed)) { 
      die('error'); 
     } 
     $dir = "devPacks/" .$fullname."_".$userid."_".$username."/".$packname; 
     if(is_dir($dir)==false){ 
      mkdir($dir, 0777); 
     } 
     if(!move_uploaded_file($_FILES['file']['tmp_name'][$key],$dir.'/'.$file_name)){ 
      die("File didn't send!"); 
     } 
    } 
    echo $dir; 
} 
?> 
+1

您需要使用3 *递归*参数创建嵌套目录,即'的mkdir($目录,0777,真)'。见http://php.net/manual/function.mkdir.php – Phil

+0

尝试__DIR__ http://php.net/manual/ru/language.constants.predefined.php – Sakezzz

+0

感谢@Phil工作。 – Jagr

回答

1

尝试

上传文件路径$_SERVER['DOCUMENT_ROOT'];