title: Plupload Show succes but images not in upload dir
body: <p>I am building an image upload function for my website and rather than waste time rolling my own uploader i decided to use pluploader. I have used this uploader before and it worked right out of the box, but this time i can't get the thing to work.<br>
  My upload page code:</p>
  
  <pre><code>&lt;script type="text/javascript"&gt;
  $(function() {
  $("#uploader").plupload({
      // General settings
      runtimes : 'html5,gears,flash,silverlight,browserplus',
      url : '/plupload/examples/upload.php',
      max_file_size : '10mb',
      chunk_size : '1mb',
  
      // Specify what files to browse for
      filters : [
          {title : "Image files", extensions : "jpg,gif,png"},
      ],
  
      // Flash settings
      flash_swf_url : '/plupload/js/plupload.flash.swf',
  
      // Silverlight settings
      silverlight_xap_url : '/plupload/js/plupload.silverlight.xap'
  
  });
      // Client side form validation
  $('form').submit(function(e) {
      var uploader = $('#uploader').plupload('getUploader');
  
      // Files in queue upload them first
      if (uploader.files.length &gt; 0) {
          // When all files are uploaded submit form
          uploader.bind('StateChanged', function() {
              if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
                  $('form')[0].submit();
              }
          });
  
          uploader.start();
      } else
          alert('You must at least upload one file.');
  
      return false;
  });
  
  });
  &lt;/script&gt;
  </code></pre>
  
  <p>And then my upload file:</p>
  
  <pre><code>    &lt;?php
  /**
   * upload.php
   *
   * Copyright 2009, Moxiecode Systems AB
   * Released under GPL License.
   *
   * License: http://www.plupload.com/license
   * Contributing: http://www.plupload.com/contributing
   */
  
  // HTTP headers for no cache etc
  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  header("Cache-Control: no-store, no-cache, must-revalidate");
  header("Cache-Control: post-check=0, pre-check=0", false);
  header("Pragma: no-cache");
  
  // Settings
  //$targetDir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload";
  $targetDir = 'imgs' . DIRECTORY_SEPARATOR . 'uploads';
  
  $cleanupTargetDir = false; // Remove old files
  $maxFileAge = 5 * 3600; // Temp file age in seconds
  
  // 5 minutes execution time
  @set_time_limit(5 * 60);
  
  // Uncomment this one to fake upload time
  // usleep(5000);
  
  // Get parameters
  $chunk = isset($_REQUEST["chunk"]) ? intval($_REQUEST["chunk"]) : 0;
  $chunks = isset($_REQUEST["chunks"]) ? intval($_REQUEST["chunks"]) : 0;
  $fileName = isset($_REQUEST["name"]) ? $_REQUEST["name"] : '';
  
  // Clean the fileName for security reasons
  $fileName = preg_replace('/[^\w\._]+/', '_', $fileName);
  
  // Make sure the fileName is unique but only if chunking is disabled
  if ($chunks &lt; 2 &amp;&amp; file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName)) {
      $ext = strrpos($fileName, '.');
      $fileName_a = substr($fileName, 0, $ext);
      $fileName_b = substr($fileName, $ext);
  
      $count = 1;
      while (file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName_a . '_' . $count . $fileName_b))
          $count++;
  
      $fileName = $fileName_a . '_' . $count . $fileName_b;
  }
  
  $filePath = $targetDir . DIRECTORY_SEPARATOR . $fileName;
  
  // Create target dir
  if (!file_exists($targetDir))
      @mkdir($targetDir);
  
  // Remove old temp files    
  if ($cleanupTargetDir &amp;&amp; is_dir($targetDir) &amp;&amp; ($dir = opendir($targetDir))) {
      while (($file = readdir($dir)) !== false) {
          $tmpfilePath = $targetDir . DIRECTORY_SEPARATOR . $file;
  
          // Remove temp file if it is older than the max age and is not the current file
          if (preg_match('/\.part$/', $file) &amp;&amp; (filemtime($tmpfilePath) &lt; time() - $maxFileAge) &amp;&amp; ($tmpfilePath != "{$filePath}.part")) {
              @unlink($tmpfilePath);
          }
      }
  
      closedir($dir);
  } else
      die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}');
  
  
  // Look for the content type header
  if (isset($_SERVER["HTTP_CONTENT_TYPE"]))
      $contentType = $_SERVER["HTTP_CONTENT_TYPE"];
  
  if (isset($_SERVER["CONTENT_TYPE"]))
      $contentType = $_SERVER["CONTENT_TYPE"];
  
  // Handle non multipart uploads older WebKit versions didn't support multipart in HTML5
  if (strpos($contentType, "multipart") !== false) {
      if (isset($_FILES['file']['tmp_name']) &amp;&amp; is_uploaded_file($_FILES['file']['tmp_name'])) {
          // Open temp file
          $out = fopen("{$filePath}.part", $chunk == 0 ? "wb" : "ab");
          if ($out) {
              // Read binary input stream and append it to temp file
              $in = fopen($_FILES['file']['tmp_name'], "rb");
  
              if ($in) {
                  while ($buff = fread($in, 4096))
                      fwrite($out, $buff);
              } else
                  die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
              fclose($in);
              fclose($out);
              @unlink($_FILES['file']['tmp_name']);
          } else
              die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}');
      } else
          die('{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}');
  } else {
      // Open temp file
      $out = fopen("{$filePath}.part", $chunk == 0 ? "wb" : "ab");
      if ($out) {
          // Read binary input stream and append it to temp file
          $in = fopen("php://input", "rb");
  
          if ($in) {
              while ($buff = fread($in, 4096))
                  fwrite($out, $buff);
          } else
              die('{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}');
  
          fclose($in);
          fclose($out);
      } else
          die('{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}');
  }
  
  // Check if file has been uploaded
  if (!$chunks || $chunk == $chunks - 1) {
      // Strip the temp .part suffix off 
      rename("{$filePath}.part", $filePath);
  }
  
  
  // Return JSON-RPC response
  die('{"jsonrpc" : "2.0", "result" : null, "id" : "id"}');
  
  ?&gt;
  </code></pre>
  
  <p>I have all of these in my head:</p>
  
  <pre><code>        &lt;link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css" type="text/css" /&gt;
      &lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"&gt;&lt;/script&gt;
      &lt;script src=" https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js"&gt;&lt;/script&gt;
  
      &lt;!-- Load plupload and all it's runtimes and finally the UI widget --&gt;
      &lt;link rel="stylesheet" href="/plupload/js/jquery.ui.plupload/css/jquery.ui.plupload.css" type="text/css" /&gt;
  
      &lt;script type="text/javascript" src="/plupload/js/plupload.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="/plupload/js/plupload.gears.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="/plupload/js/plupload.silverlight.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="/plupload/js/plupload.flash.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="/plupload/js/plupload.browserplus.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="/plupload/js/plupload.html4.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="/plupload/js/plupload.html5.js"&gt;&lt;/script&gt;
      &lt;script type="text/javascript" src="/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js"&gt;&lt;/script&gt;
  </code></pre>
  
  <p>It works, as in I see the fancy upload box and can select file, hit upload then run through the percentage and then say uploaded. But then I got to my upload dir and there is nothing there. I have tried multiple locations for uploading the pics to and none of them work. And I have searched my whole host directory for the images and they have not been uploaded.<br>
  Any ideas?  </p>
  
  <p>EDIT:<br>
  I have got it to upload to the temp directory, but the second I replace the temp directory with something else it starts sending error code 100 Failed to open temp directory. Still stumped as to what to do.</p>