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; }