Q:

ExtJS 4 and PHP multiple file upload widget configuration incorrect when installed on Windows Server 2008 using IIS 7 and FastCGI PHP

Can someone help me with necessary configuration (or help troubleshoot) file uploads with ExtJS 4 in PHP FastCGI in IIS 7?  The application user interface is working well, but the files are not moving into the \file_upload\public\tmp\upload folder.
More detail:
Over the past couple days, I've been trying out different multi-file uploads widgets for ExtJS 4.  Some only work with the new HTML 5 File API but are broken in Internet Explorer.  And some just have a user interface that doesn't jive well with ExtJS 4 so I thought they would look a bit goofy.  I finally found one that works in all browsers, even though its quite simple!  I've configured the ExtJS/PHP multiple file upload application below (blog link) in Windows Server 2008 on IIS 7 with PHP FastCGI.  I have some instructions on setup.  I haven't really changed anything with the application except configuration and a few other things to get the application user interface working.
Windows Setup Instructions:
1.) Widget found here:
http://blog.debug.cz/2012/05/file-upload-widget-for-extjs-4x.html
Here is the demo:
http://debug.cz/demo/upload/
Download source here on GitHub:
https://github.com/ivan-novakov/extjs-upload-widget
2.) Place extracted files on desktop and rename root folder "file_upload" for simplicity
3.) Download ExtJS 4 and rename root ExtJS 4 folder to "extjs" and place in this folder:
\file_upload\public\[extjs]

Download this and extract:
http://cdn.sencha.io/ext-4.1.0-gpl.zip
4.) (In Windows) Rename the "upload" shortcut file to "upload_old" (or just delete it), and copy the actual upload folder \file_upload\lib\upload into folder \file_upload\public\external\upload
5.) Create the file upload folder \file_upload\public\tmp\upload for the PHP file to place its files
define('UPLOAD_DIR', '/tmp/upload/');

6.) Set up PHP in Windows Server 2008 (x64) in IIS 7

turned on CGI in IIS 7 on Windows Server 2008
downloaded Administration Pack for IIS 7.0 (x64) 
followed these instructions:

http://www.howtogeek.com/50432/how-to-install-php-on-iis-7-for-windows-server-2008/
used these php.ini settings:
cgi.force_redirect = 0

fastcgi.impersonate = 1

extension_dir = "D:\Program Files\php\ext"

date.timezone = "America/Chicago"

extension=php_curl.dll"

display_errors = On ==========> more notes below

upload_tmp_dir = "{desktop path}\file_upload\public\tmp\upload"

7.) Placed at the top of my php file because there is apparently some issue with IIS 7???
<?PHP
ini_set('display_errors',true);

8.) Followed answer here to configure HTTP Errors in IIS 7 for PHP
https://serverfault.com/questions/19561/how-can-i-display-and-log-php-errors-on-iis7

IIS Manager > click web site > Configuration Editor > system.webServer > httpErrors > change "DetailedLocalOnly" to "Detailed"

9.) In C:\Windows\php.ini I set this configuration setting to "On"
display_errors = On

Or should this configuration setting be set to "stderr" since I'm using the FastCGI in IIS 7?
; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but
; it could be very dangerous in production environments. Depending on the code
; which is triggering the error, sensitive information could potentially leak
; out of your application such as database usernames and passwords or worse.
; It's recommended that errors be logged on production servers rather than
; having the errors sent to STDOUT.
; Possible Values:
;   Off = Do not display any errors
;   stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
;   On or stdout = Display errors to STDOUT
; Default Value: On
; Development Value: On
; Production Value: Off
; http://php.net/display-errors
display_errors = On

10.) change security on the \file_upload folder and its subfolders 

IIS_IUSRS user group (or just IUSR user) 
IIS APPPOOL{application pool}

11.) Use the \file_upload file as your IIS site web root folder

A:

Had to do a few things to fix this:
I realized the default "upload.php" file was just giving a fake JSON response with a success everytime for each file.  So I made a backup of "upload.php" and called it "upload_old.php".  Then I did a save as on "upload_into_dir.php" and renamed it "upload.php" since the ExtJS code references "upload.php" in 7 different places (some places are just documentation though).
Then when I tried to upload my files, I got this error:
Ext.Error: You're trying to decode an invalid JSON String: <br />
<b>Warning</b>:  fopen(/tmp/upload/test.jpg): failed to open stream: No such file or directory in <b>C:\Users\macgyver\Desktop\file_upload\public\upload.php</b> on line <b>28</b><br />
{"success":false,"message":"Error writing to file"}

I had to put a "." in front of the path in Windows for PHP to recognize my file.  Then it worked fine.
define('UPLOAD_DIR', './tmp/upload/');

