]> granicus.if.org Git - php/commitdiff
- Fixed bug #50756 (CURLOPT_FTP_SKIP_PASV_IP does not exist.)
authorSriram Natarajan <srinatar@php.net>
Sat, 23 Jan 2010 01:37:32 +0000 (01:37 +0000)
committerSriram Natarajan <srinatar@php.net>
Sat, 23 Jan 2010 01:37:32 +0000 (01:37 +0000)
ext/curl/interface.c
ext/curl/tests/curl_ftp_pasv.phpt [new file with mode: 0644]

index 5f35367ac76762e78b6ce99c4ab2ff390f5759c3..fa5194864e0b188bb52af8feecc9c9f5dc40d903 100644 (file)
@@ -747,6 +747,7 @@ PHP_MINIT_FUNCTION(curl)
        REGISTER_CURL_CONSTANT(CURLFTPSSL_CONTROL);
        REGISTER_CURL_CONSTANT(CURLFTPSSL_ALL);
 #endif
+
 #if LIBCURL_VERSION_NUM > 0x071301
        REGISTER_CURL_CONSTANT(CURLOPT_CERTINFO);
 #endif
@@ -791,6 +792,7 @@ PHP_MINIT_FUNCTION(curl)
 
 #if LIBCURL_VERSION_NUM >= 0x070f01
        REGISTER_CURL_CONSTANT(CURLOPT_FTP_FILEMETHOD);
+       REGISTER_CURL_CONSTANT(CURLOPT_FTP_SKIP_PASV_IP);
 #endif
 
 #if LIBCURL_VERSION_NUM >= 0x071001
@@ -1675,6 +1677,7 @@ static int _php_curl_setopt(php_curl *ch, long option, zval **zvalue, zval *retu
 #endif
 #if LIBCURL_VERSION_NUM >= 0x070f01
                case CURLOPT_FTP_FILEMETHOD:
+               case CURLOPT_FTP_SKIP_PASV_IP:
 #endif
 #if LIBCURL_VERSION_NUM >  0x071301
                case CURLOPT_CERTINFO:
diff --git a/ext/curl/tests/curl_ftp_pasv.phpt b/ext/curl/tests/curl_ftp_pasv.phpt
new file mode 100644 (file)
index 0000000..6cd7429
--- /dev/null
@@ -0,0 +1,59 @@
+--TEST--
+Test curl_exec() function with basic functionality 
+--CREDITS--
+--SKIPIF--
+<?php 
+if (!extension_loaded("curl")) exit("skip curl extension not loaded");
+if (false === getenv('PHP_CURL_FTP_REMOTE_SERVER'))  exit("skip PHP_CURL_FTP_REMOTE_SERVER env variable is not defined");
+if (false === getenv('PHP_CURL_FTP_REMOTE_USER'))  exit("skip PHP_CURL_FTP_REMOTE_USER env variable is not defined");
+if (false === getenv('PHP_CURL_FTP_REMOTE_PASSWD'))  exit("skip PHP_CURL_FTP_REMOTE_PASSWD env variable is not defined");
+?>
+--FILE--
+<?php
+  $host = getenv('PHP_CURL_FTP_REMOTE_SERVER');
+  $username = getenv('PHP_CURL_FTP_REMOTE_USER');
+  $password = getenv('PHP_CURL_FTP_REMOTE_PASSWD');
+
+  // FTP this script to a server 
+  $fp  =  fopen ( __FILE__ ,  "r" );
+  $url  =  "ftp://$username:$password@$host/test.phpt" ;
+
+  $ch  =  curl_init ();
+
+  // enable below to get the output in verbose mode.
+  // curl_setopt ( $ch , CURLOPT_VERBOSE, 1 );
+
+  /* Without enabling SKIP_PASV_IP flag, the following output will be seen..
+       < 227 Entering Passive Mode (10,5,80,146,100,199)
+       *   Trying 10.5.80.146... * connected
+       * Connecting to 10.5.80.146 (10.5.80.146) port 25799
+   */
+
+  /* After enabling SKIP_PASV_IP flag, the following output will be seen..
+       < 227 Entering Passive Mode (10,5,80,146,50,229)
+       * Skips 10.5.80.146 for data connection, uses 10.5.80.146 instead
+       *   Trying 10.5.80.146... * connected
+   */
+
+  curl_setopt ( $ch , CURLOPT_URL, $url );
+  curl_setopt ( $ch , CURLOPT_TRANSFERTEXT, 1 );
+
+  //force passive connection
+  curl_setopt ( $ch , CURLOPT_FTP_USE_EPSV, 0 );
+  curl_setopt ( $ch , CURLOPT_FTP_SKIP_PASV_IP, 1 );
+
+  // mark the file for upload..
+  curl_setopt ( $ch , CURLOPT_INFILE, $fp );
+  curl_setopt ( $ch , CURLOPT_INFILESIZE,  filesize(__FILE__) );
+  curl_setopt ( $ch , CURLOPT_PUT, 1 );
+  curl_setopt ( $ch , CURLOPT_UPLOAD, 1 );
+
+  $result  =  curl_exec ( $ch );
+  var_dump ( $result );
+  curl_close ( $ch );
+
+?>
+===DONE===
+--EXPECTF--
+bool(true)
+===DONE===