PHP upload images in directory error

I am trying to upload photos in the folders from below php code but it creates new folder with year and month with 000 permission. Please help me. What is wrong with the below code?

This is the code, please check and thanks for your time

<?php
require('include.php');  
require('extras/Uploader.php');  
	
function createFolder($subdir_path) {
	#$htaccess = "php_flag engine off" . "\\r\
";
	#$htaccess .= "RemoveHandler .php .php5 .php4 .php3 .phtml .pl .asp" . "\\r\
";
	#$htaccess .= "AddType text/plain .php .php .htm .html .phtml .pl .asp" . "\\r\
";
	#$mode = 0777;
	@mkdir($subdir_path, $mode = 0777);
	@chmod($subdir_path, $mode = 0777);
	#file_put_contents($subdir_path . '.htaccess', $htaccess);
	@mkdir($subdir_path."thmb", $mode = 0777);
	@chmod($subdir_path."thmb", $mode = 0777);
	#file_put_contents($subdir_path."thmb/" . '.htaccess', $htaccess);
	@mkdir($subdir_path."bigThmb", $mode = 0777);
	@chmod($subdir_path."bigThmb", $mode = 0777);
	#file_put_contents($subdir_path."bigThmb/" . '.htaccess', $htaccess);
	@mkdir($subdir_path."mobile_thmb", $mode = 0777);
	@chmod($subdir_path."mobile_thmb", $mode = 0777);
	#file_put_contents($subdir_path."mobile_thmb/" . '.htaccess', $htaccess);
	@mkdir($subdir_path."mobile_bigThmb", $mode = 0777);
	@chmod($subdir_path."mobile_bigThmb", $mode = 0777);
	#file_put_contents($subdir_path."mobile_bigThmb/" . '.htaccess', $htaccess);
}


global $ads_settings;


$widthLimit = 1920;
$heightLimit = 1080;
$minWidth = $ads_settings['big_thmb_width']; 
$minHeight = $ads_settings['big_thmb_height'];


$dir = '../images/listings/'; 
$subdir = date("Y-m"); 
if(!file_exists($dir . $subdir . DIRECTORY_SEPARATOR)) {
	createFolder($dir . $subdir . DIRECTORY_SEPARATOR);
}
$filename = date("YmdHis") . "-" . str_replace(" ", "", microtime());


$upload_dir = $dir . $subdir . DIRECTORY_SEPARATOR;
$valid_extensions = array('gif', 'png', 'jpeg', 'jpg');


$Upload = new FileUpload('uploadfile');
$ext = $Upload->getExtension();
$Upload->newFileName = $filename . "." . $ext;
$result = $Upload->handleUpload($upload_dir, $valid_extensions);
if (!$result) {
    echo json_encode(array('success' => false, 'msg' => $Upload->getErrorMsg()));   
} else {
	$path = $Upload->getSavedFile();
	$imgsize = getimagesize($path);
	 
	if ($imgsize[0] < $minWidth || $imgsize[1] < $minHeight) {
		 echo json_encode(array('success' => false, 
								'msg' => " not uploaded, minimal size photo {$minWidth}x{$minHeight}")); 
		 exit(0);
	}
	
	require_once("smart_resize_image.module.php");
	if ($imgsize[0] > $widthLimit || $imgsize[1] > $heightLimit)
		resize_image($path, $upload_dir . $filename . "." . $ext, $widthLimit, $heightLimit, $quality = 90, $crop = false);


	# create thmb
	resize_image($upload_dir . $filename . "." . $ext, $upload_dir . 'thmb' . DIRECTORY_SEPARATOR . $filename . "." . $ext, $ads_settings['thmb_width'], $ads_settings['thmb_height'], $quality = 90, $crop = true);
	
	# create bigThmb
	resize_image($upload_dir . $filename . "." . $ext, $upload_dir . 'bigThmb' . DIRECTORY_SEPARATOR . $filename . "." . $ext, $ads_settings['big_thmb_width'], $ads_settings['big_thmb_height'], $quality = 90, $crop = true);
	
	global $config_table_prefix;
	$mobile_settings = $db->fetchAssoc("SELECT * FROM {$config_table_prefix}mobile_settings");
	if ($mobile_settings['enable_mobile_templates']) {
	
		# create mobile_thmb
		resize_image($upload_dir . $filename . "." . $ext, $upload_dir . 'mobile_thmb' . DIRECTORY_SEPARATOR . $filename . "." . $ext, $mobile_settings['mobile_thmb_width'], $mobile_settings['mobile_thmb_height'], $quality = 90, $crop = true);
		
		# create mobile_bigThmb
		resize_image($upload_dir . $filename . "." . $ext, $upload_dir . 'mobile_bigThmb' . DIRECTORY_SEPARATOR . $filename . "." . $ext, $mobile_settings['mobile_big_thmb_width'], $mobile_settings['mobile_big_thmb_height'], $quality = 90, $crop = true);
		
	}
	if (!empty($ads_settings['watermark']) && file_exists($upload_dir . $filename . "." . $ext)) {
		require_once("watermark_image.module.php");
		add_watermark($upload_dir . $filename . "." . $ext, $ads_settings['watermark'], $ads_settings['watermark_position'], $ads_settings['watermark_transparency'], 90);
	}
			
    echo json_encode(array("success" => true, 
						   "file" => $Upload->getFileName(), 
						   "folder" => $subdir));
}

If you turn off error suppression in the createFolder() routine does it give any useful messages?

I had similar problems recently and used this script to error log the file parameters to help debugging:

<?php
  error_reporting(-1);
  ini_set('display_errors', 1);
   
  $uploadsDir = __DIR__ .'/tmp/uploads';


  if( ! is_dir($uploadsDir) )
  { 
    mkdir($uploadsDir);
  }
  ini_set('error_log', $uploadsDir .'/___error_LOG.php');
  error_log(' --> ' .__LINE__); // logs progress


  if( isset($_FILES["file"]) ):
    foreach($_FILES["file"] as $id => $item):
      error_log($id .' --> ' .$item); // logs parameter


      // ESSENTIAL - REMOVE BL@@DY SPACES
      $_FILES["file"]['name'] = str_replace(array('%20', ' '), '-', $_FILES["file"]['name']);
    endforeach;
  endif;


// Your script goes here