Exemple #1
0
 private static function _pasv()
 {
     self::_resetError();
     self::_printCommand("PASV");
     self::_waitForResult();
     $lr = self::getLastResult();
     if (self::_isError()) {
         return false;
     }
     if ($lr != self::FTP_PASSIVE_MODE) {
         return false;
     }
     $subject = trim(substr(self::$lastLine, 4));
     $patch = array();
     if (preg_match("/\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),(\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/", $subject, $patch)) {
         self::$pasvAddr = $patch;
         $host = sprintf("%d.%d.%d.%d", $patch[1], $patch[2], $patch[3], $patch[4]);
         $port = $patch[5] * 256 + $patch[6];
         $err_no = 0;
         $err_msg = '';
         $passiveConnection = @fsockopen($host, $port, $err_no, $err_msg, self::FTP_TIMEOUT);
         if ($err_no != 0) {
             self::_setError($err_no, $err_msg);
             return false;
         }
         return $passiveConnection;
     }
     return false;
 }