#49921 [Asn]: Curl post upload functions changed

From: Date: Wed, 21 Oct 2009 13:35:02 +0000
Subject: #49921 [Asn]: Curl post upload functions changed
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-143755@lists.php.net to get a copy of this message
ID: 49921 Updated by: jani@php.net Reported By: jon at feburman dot co dot uk Status: Assigned Bug Type: cURL related Operating System: Redhat 5 PHP Version: 5.2.11 Assigned To: iliaa New Comment: See also bug #49943 Previous Comments: ------------------------------------------------------------------------ [2009-10-20 10:14:38] jani@php.net Ilia, see also bug #48962 (and especially the last comment there :) ------------------------------------------------------------------------ [2009-10-19 17:44:23] jon at feburman dot co dot uk I have had to go back to 5.2.10 (which works correctly) as this bug broke our live site, so I cannot test this - and you will need to fill in some values for the variables at the bottom. But, off the top of my head, something like: <?PHP function upload($dir, $file, $userpass, $url) { $ch = curl_init(); if($ch) { $data = array('dir' => $dir, 'filedata0' => "@$file"); if( !curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ) return false; if( !curl_setopt($ch, CURLOPT_URL, $url)) return false; if( !curl_setopt($ch, CURLOPT_USERPWD, $userpass)) return false; if( !curl_setopt($ch, CURLOPT_POST, 1)) return false; if( !curl_setopt($ch, CURLOPT_POSTFIELDS, $data)) return false; if( !curl_exec($ch) ) return false; curl_close($ch); return true; } else return false; } $dir = "uploads"; //Not needed - but in our case this was a required post $file = "/local/path/to/a/file"; //Local path to a file $userpass = "auser:apasswd"; //Remote login details $url = "remote/upload/url"; //A remote upload page upload($dir, $file, $userpass, $url); ?> On the remote system see what the upload file is called. If it makes any difference, our remote system was a Solaris 9 box. ------------------------------------------------------------------------ [2009-10-19 14:31:48] jani@php.net Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If the script requires a database to demonstrate the issue, please make sure it creates all necessary tables, stored procedures etc. Please avoid embedding huge scripts into the report. ------------------------------------------------------------------------ [2009-10-19 13:50:47] jon at feburman dot co dot uk Description: ------------ Files being uploaded via http post come across with a url encoded version of the whole file path rather than just the name part as it did in older versions of PHP. Reproduce code: --------------- function upload($dir, $file, $userpass) { if( ! $this->cURLcheckBasicFunctions() ) return false; $ch = curl_init(); if($ch) { $data = array('dir' => $dir, 'filedata0' => "@$file"); if( !curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ) return false; if( !curl_setopt($ch, CURLOPT_URL, $this->url)) return false; if( !curl_setopt($ch, CURLOPT_USERPWD, $userpass)) return false; if( !curl_setopt($ch, CURLOPT_POST, 1)) return false; if( !curl_setopt($ch, CURLOPT_POSTFIELDS, $data)) return false; if( !curl_exec($ch) ) return false; curl_close($ch); return true; } else return false; } Expected result: ---------------- File arrives on remote server called "SAV2906_A4L_4pp_D_shipping_label.pdf" Actual result: -------------- File arrives on remote server called ":2Fvar:2Fwww:2Fvhosts:2Ffeburman.co.uk:2Fhttpdocs:2Fsprint:2Fjobs:2Fjob 2906:2FSAV2906_A4L_4pp_D_shipping_label.pdf" ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=49921&edit=1

« previous php.bugs (#143755) next »