ID:               50060
 User updated by:  bugs dot php dot net at sgerrand dot com
 Reported By:      bugs dot php dot net at sgerrand dot com
 Status:           Bogus
 Bug Type:         cURL related
 Operating System: Linux (Ubuntu x86_64 2.6.31-14)
 PHP Version:      5.2.11
 New Comment:

Please refer to the documentation for curl_setopt() - 
http://php.net/curl_setopt

CURLOPT_POSTFIELDS       The full data to post in a HTTP "POST" 
operation. To post a file, prepend a filename with @ and use the full 
path. This can either be passed as a urlencoded string like 
'para1=val1&para2=val2&...' or as an array with the field name as key 
and field data as value. If value is an array, the Content-Type header

will be set to multipart/form-data.

The case I have logged is when data to be posted using this option is 
an array which happens to have a value that starts with '@', as per 
the example. This edge case is being caused by the function used to 
create the form data to pass to cURL.

I would note that the cURL command line client on any POSIX system can

perform this without issue - i.e.: 

curl -d 'k...@value' http://www.php.net/


Previous Comments:
------------------------------------------------------------------------

[2009-11-03 10:18:06] scott...@php.net

@ has a special meaning with cURL and takes the contents of the file.

------------------------------------------------------------------------

[2009-11-03 07:29:36] bugs dot php dot net at sgerrand dot com

Description:
------------
PHP's cURL library dies returning the error message "failed creating 
formpost data" when trying to use an array that contains a value 
starting with '@'. 

If the array is changed to a string in URL encoded like format, the 
problem does not occur.

Reproduce code:
---------------
<?php

$url = 'http://www.php.net';
$postData = array('key' => '@value');
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);

if (! curl_exec($ch) ) print 'cURL error: ' . curl_error($ch);
else print "cURL success";

curl_close($ch);

?>

Expected result:
----------------
cURL success

Actual result:
--------------
cURL error: failed creating formpost data


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=50060&edit=1

Reply via email to