#10307 [Opn]: PHP refusing to get temporary file name from an HTTP PUT request.
| From: | wez@php.net | Date: | Mon, 26 Aug 2002 00:14:12 +0000 |
| Subject: | #10307 [Opn]: PHP refusing to get temporary file name from an HTTP PUT request. | ||
| References: | 1 | Groups: | php.bugs php.doc |
| Request: | Send a blank email to php-bugs+get-17812@lists.php.net to get a copy of this message | ||
ID: 10307
Updated by: wez@php.net
Reported By: excalibur@hub.org
Status: Open
-Bug Type: HTTP related
+Bug Type: Documentation problem
Operating System: freebsd 4.2
PHP Version: 4.2.1
New Comment:
Making this a Documentation Problem; I can't find any code
that sets PHP_UPLOADED_FILE_NAME, PHP_PUT_FILENAME or
other variations, so it seems that the docs at
http://www.php.net/manual/en/features.file-upload.put-method.php
are just plain wrong.
However, it does seem that fopen("php://stdin", "rb") will
allow access to that data (but I haven't tried to verify this).
Previous Comments:
------------------------------------------------------------------------
[2002-08-25 19:57:56] wez@php.net
Sounds like the data is ending up coming from stdin;
try the following code:
$data = fopen("php://stdin", "rb");
$destfile = fopen("file_to_overwrite", "wb");
while(!feof($data)) {
$chunk = fread($data, 4096);
fwrite($destfile, $chunk);
}
fclose($destfile);
fclose($data);
This doesn't explain why it doesn't behave as documented,
but should be enough to get you going.
------------------------------------------------------------------------
[2002-08-25 12:40:18] vvs_php@nsrd.sinp.msu.ru
PUT method is used for publishing from HTML editors.
But apache brings the data to the script to the stdin stream.
So, PHP does not accept any data. And, also, does not set up
any variable on that score.
------------------------------------------------------------------------
[2002-08-13 22:43:27] kalowsky@php.net
updating version as per user comments.
------------------------------------------------------------------------
[2002-07-15 03:22:45] t.jago@its.uq.edu.au
I am using FreeBSD 4.6 and mod_php4-4.2.1_2.
I am using curl to send the file.
curl -T /kernel http://server/test.dat
Interesting thing is that the PHP code is executed and terminated
BEFORE the file has completed uploading. Weird.
------------------------------------------------------------------------
[2002-07-14 19:15:57] briand@tps-eoltp.com
I have duplicated this problem with PHP 4.2.1, on a Linux Mandrake
system
with an Apache 1.3 server. However, instead of a browser, I am
using the W3C libbwww sample program, put.c
(http://www.w3.org/Library/Examples/put.c). This is about as
"official" a PUT command as you can get.
For a server script, I have one that is about as simple as
you can get.
<?php
#copy($PHP_UPLOADED_FILE_NAME,"uploaded_file");
print "$PHP_UPLOADED_FILE_NAME";
?>
I've tried many variations, printing out $_POST and $_FILES,
and other variables, all with the same empty results.
Any new ideas?
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/10307
--
Edit this bug report at http://bugs.php.net/?id=10307&edit=1