|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2008-06-16 17:20 UTC] php at info-svc dot com
Description:
------------
After receiving reports of a broken feature, the problem was traced to extract($_FILES) producing different results on different servers.
A server running PHP 5.2.5 gave the expected result where $variable['tmp_name'] contained the uploaded file path. A server running PHP 5.2.3 gave the unexpected result where $variable['tmp_name'] always dumped as string(1) "/"
The workaround is to use $_FILES['tmp_name'] in which case both servers gave the expected result.
I am stumped as to whether this is caused by a bug that was fixed between versions or some configuration issue I am not aware of?
Robert Chapin
Chapin Information Services, Inc.
Reproduce code:
---------------
<form method="POST">
<input name="themefile" type="file" />
<input type="submit" />
</form>
<?php
extract($_FILES, EXTR_SKIP);
var_dump($themefile);
var_dump($themefile['tmp_name']);
?>
Expected result:
----------------
array(5) {
["name"]=>
string(20) "samplefile.txt"
["type"]=>
string(24) "application/octet-stream"
["tmp_name"]=>
string(18) "/var/tmp/phpSJkwr0"
["error"]=>
int(0)
["size"]=>
int(379)
}
string(18) "/var/tmp/phpSJkwr0"
Actual result:
--------------
string(14) "/tmp/phpZOtyB7"
string(1) "/"
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Nov 21 05:00:01 2025 UTC |
I confirmed this behavior with PHP 5.2.6 running on IIS and Windows 2003 SP2. Test case output with register_globals Off array(5) { ["name"]=> string(14) "samplefile.txt" ["type"]=> string(10) "text/plain" ["tmp_name"]=> string(25) "C:\WINDOWS\Temp\php57.tmp" ["error"]=> int(0) ["size"]=> int(459) } string(25) "C:\WINDOWS\Temp\php57.tmp" Test case output with register_globals On string(25) "C:\WINDOWS\Temp\php58.tmp" string(1) "C" So I'm convinced that register_globals is involved here. There is something horribly wrong with this feature or its documentation.