Upload Progress Meter for Windows – The next take

The uploadprogress extension for PHP never really worked on Windows and since I don’t have a Windows development environment I could never do a proper analysis of the problem. Until this week, when Tomas Holusa sent me an email telling me about some VCWD_RENAME problems on Windows. I digged a little bit deeper and found this patch commited by Pierre 10 months ago to the PHP 5.3 branch. This confirmed the problem that if the target file already exists, VCWD_RENAME fails on Windows (but works on unixy systems). Writing a patch for that problem was then easy and according to Tomas, the extension finally works on Windows.

If you want to try it out, Pierre was so kind to compile the latest CVS snapshots for PHP 5.2: php_uploadprogress-1.0.0-5.2-Win32-VC6-x86.zip or php_uploadprogress-1.0.0-5.2-nts-Win32-VC6-x86.zip (or search for it at http://downloads.php.net/pierre/). More feedback of running this on Windows would be appreciated, then I can finally release uploadprogress 1.0.0 and mark it as “stable” :)

Btw, I still owe you a “Caveats with Upload Progress Meter” for the most common problems with the extensions. I didn’t forget that and can hopefully post it soon.

Update: Fixed the link to point to the 1.0.0 DLLs

Interested in trying this out but the links to the zip files are broken….

Easiest found here:

Ken: Thanks for the hint, I adjusted the post

Still not working for me.
Windows Server 2003
PHP 5.2.8 / Uploadprogress 1.0.0
Apache 2.2.11

We experience the same problem. It does not show the progress.

me too :(
i’m on windows with appserv and my phpinfo says my extensions directory is C:AppServphp5ext i put the dll there and it’s not working as well as the ffmpeg dll after i’ve done all the settings and restarted few times…
i’m gona restart my whole laptop and see if it works

Thanks Christian. It works for me:)

I am Running Vista SP2, Apache/2.2.11 (Win32) PHP/5.2.8, Drupal 6.12.




Is any possible run this under PHP 5.3?


As soon as Pierre has the time to compile the extension for 5.3, it will be available here http://downloads.php.net/pierre/

Does this work on IIS?

Willie: Theoretically it could also work on IIS, but I didn’t here from anyone trying that.

just so anyone wants to know, it works on IIS :)

Great to hear, thanks for your feedback, Willie

I run Apache 2.2.6 and php 5.2.5 on Windows using WAMP.

When i restart my web server, the php_ error.log file contains:

PHP Warning: PHP Startup: uploadprogress: Unable to initialize module
Module compiled with module API=20060613, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=1
These options need to match
in Unknown on line 0

So it seems to be related to thread-safety=0

Yes of course nts for non-thread-safe and then… just above there was the thread-safe version… on Pierre’s link The module is loaded properly as expected

Thanks I will test it right away!

still returns null. no info about the progress.

Is there a prefix to the key when calling uploadprogress_get_info like
uploadprogress_get_info(‘upt_’ . $key);

No offense, but apc, on the other hand, is working. It is disabled when doing test with uploadprogress.



I am trying this extension on wapm2.0.f(php 5.2.8, Apache 2.2.11) but I couldn’t make it wotk. I have added php_uploadprogress.dll in extension folder and I can view information about it in phpinfo(); but still it is not workinc. I have also checked php_error log but I couldn’t find any informaation. Can anybody help me to figure out the problem.

I have the same problem, sometimes it returns null, otherwise “Failed to load source for: http://localhost…” :(

Thanks ! works for me – I have Zend CE and it works like a charm.

I’ve got this working with
Windows XP
Apache 2.0.63

you need to add this to the PHP.INI
uploadprogress.file.contents_template = c:/temp/upload_contents_%s
uploadprogress.file.filename_template = c:/temp/upt_%s.txt

default is for a unix machine /tmp/

i downloaded http://downloads.php.net/pierre/php_uploadprogress-1.0.1-svn20091009-5.3-nts-vc9-x86.zip and copy it in the
Then i added below lines in the php.ini

uploadprogress.file.contents_template = /www/tmp
uploadprogress.file.filename_template = /www/tmp

But it doesnt work and says

“PHP startup: uploadprogress: Unable to initialize module compiled with build ID=API20090626,TS,VC9 PHP compiled with build ID=API20090626,TS,VC6 These options need to match.”

Do you have any suggestion?


There’s a version compiled with VC6 on the page mentioned above

Was anyone able to get this working on Win2003 + IIS + PHP 5.3.0 + FastCGI?

It loads the module, but all calls to uploadprogress_get_info() return null

It’s not working with FastCGI in general.

excuse me!!
all works good!

I can’t see loading progress because I load 600 mb file to localhost
my proc will be very busy )))

I ask my friend to upload some file to my ip.
all works good! it works like particial content at squid

I tried all versions of pierres dlls and i got

PHP: Startup: uploadprogress: Unable to initiale module
Module compiled with build ID=API20090613
PHP compiled with build ID=API=20090626
These options need to match


PHP Startup: Unable to load dynamic library: “…..MYPATH TO EXTDIR….php_uploadprogress.dll” – Das angegebene Module wurde nicht gefunden.


and for

PHP: Startup: uploadprogress: Unable to initiale module
Module compiled with build ID=API20090626,TS,VC9
PHP compiled with build ID=API=20090626, TS,VC6
These options need to match


Im using XAMPP with

on Windows XP Professional Service Pack 3 (i586)

I hope someone can help me, I didt find a solution for this problem.

Just a fast question, i cant get it solved even afer much searching… Is there anyway to use the extension with multiple files? I supose assigning different unique ids to diferent file inputs values should work, but what about the file input name?

If you are running on Windows x86 using an XAMPP 1.7.3 based webserver installation, then you will need to use the file:
Thanks goes to Sebastien comments for helping me find this. This would likely have solved the problems posted by Veli Akcakaya and Radon8472.

Anyone feel like uploading their copy of php_uploadprogress-1.0.1-5.3-Win32-VC6-x86? That link is no longer. Thanks.

Any place in particular you want the file uploaded. Will need to have public access, unless you can suggest a better alternative.

If you want to email it to me, I can put it up on a box account or something and link it here. josh68 at the mail of google the company. Thanks.

@Josh – Give yourself a really big gold star, thank you! Finally got it working on my server!

@Josh – thank you!!!

@Josh his link version is

Tanks for the file to xampp 1.7.3

@Josh; sen bu linki vermişsin ya, ben senin daşşağını öpeyim. http://www.box.net/shared/vcczgpc8z3

Was anyone able to get this working on IIS + PHP 5.2?

It loads the module, but all calls to uploadprogress_get_info() return null

Thanks @Josh you are a hero!

@Josh: Thanks, much easier than having to compile it. Kudos :)

I downloaded the php5.3 version of the windows dll from the provided link http://www.box.com/shared/vcczgpc8z3. I have php 5.3.8. I made the entries into my php.ini file and restarted my apache 2.2. 21 server. The server won’t load the dll for some reason “the requested operation has failed!”. As soon as I comment out the
extension=php_uploadprogress.dll line it restarts but w/o the new extension of course. Anyone have an idea what might be causing this? It’s probably something simple I’m overlooking.

My bad… I installed VC9. After installing VC6 5.2 it installed properly.

@Josh thanks a ton dude, its work like charm ;)

It works like a charm, thanks!

Can anyone help me?

At our VPS on Debian Lenny we have uploadprogress installed

Run demo.php
At hosting it works fine
But at localhost it doesn’t work

Windows 7 x64 Apache 2.2.15 PHP 5.2.13
I have downloaded php_uploadprogress-1.0.0-5.2-Win32-VC6-x86.zip

I have written to php.ini
upload_progress_meter.store_method = “file”
uploadprogress.file.contents_template = “D:/Server/Temp/upload_contents_%s”
uploadprogress.file.filename_template = “D:/Server/Temp/upl_%s.txt”

And I see this http://clip2net.com/clip/m46295/1279113616-clip-8kb.png

At our hosting http://clip2net.com/clip/m46295/1279113874-clip-8kb.png

But at hosting works – localhost not!!!