VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Недавно на форуме, пользователи стали жаловаться, что нельзя по ссылки "Скачать удалённый файл и сохранить локально" (картинки), долго не мог найти в чём причина. Сначала просто тупа выключил эту функцию. Но когда такая же проблема возникла на другом форуме (где только был установлен чистый форум) начал искать. И выяснил, что эта проблема возникла после установки последнего 4.2.2 Patch Level 2 ( на другом чистом форуме такая же версия стоит)
среди изменённых файлов 4.2.2 Patch Level 2 был такой class_vurl.php, который лежит в папке includes.
посмотрев изменения, нашёл, что помимо других изменений был убран класс fsockopen
то есть вместо этого
PHP Code:
var $classnames = array('cURL', 'fsockopen');
было это
PHP Code:
var $classnames = array('cURL');
и удалён этот кусок
PHP Code:
class vB_vURL_fsockopen { /** * String that holds the cURL callback data * * @var string */ var $response_text = '';
/** * String that holds the cURL callback data * * @var string */ var $response_header = '';
/** * Filepointer to the temporary file * * @var resource */ var $fp = null;
/** * Length of the current response * * @var integer */ var $response_length = 0;
/** * If the current result is when the max limit is reached * * @var integer */ var $max_limit_reached = false;
/** * Constructor * * @param object Instance of a vB_vURL Object */ function vB_vURL_fsockopen(&$vurl_registry) { if (!is_a($vurl_registry, 'vB_vURL')) { trigger_error('Direct Instantiation of ' . __CLASS__ . ' prohibited.', E_USER_ERROR); } $this->vurl =& $vurl_registry; }
/** * Tests sockets for ssl support. * * @return bool Success * */ function test_ssl() { return function_exists('openssl_open'); }
/** * Clears all previous request info */ function reset() { $this->response_text = ''; $this->response_header = ''; $this->response_length = 0; $this->max_limit_reached = false; }
/** * Inflates the response if its gzip or deflate */ function inflate_response($type) { if (!empty($this->response_text)) { switch($type) { case 'gzip': if ($this->response_text[0] == "\x1F" AND $this->response_text[1] == "\x8b") { if ($inflated = @gzinflate(substr($this->response_text, 10))) { $this->response_text = $inflated; } } break; case 'deflate':
if ($this->response_text[0] == "\x78" AND $this->response_text[1] == "\x9C" AND $inflated = @gzinflate(substr($this->response_text, 2))) { $this->response_text = $inflated; } else if ($inflated = @gzinflate($this->response_text)) { $this->response_text = $inflated; } break; } } else { $compressed_file = $this->vurl->tmpfile; if ($gzfp = @gzopen($compressed_file, 'r')) { if ($newfp = @fopen($this->vurl->tmpfile . 'u', 'w')) { $this->vurl->tmpfile = $this->vurl->tmpfile . 'u'; if (function_exists('stream_copy_to_stream')) { stream_copy_to_stream($gzfp, $newfp); } else { while(!gzeof($gzfp)) { fwrite($fp, gzread($gzfp, 20480)); } }
fclose($newfp); }
fclose($gzfp); @unlink($compressed_file); } } }
/** * Callback for handling the request body * * @param string Request * * @return integer length of the request */ function callback_response($response) { $chunk_length = strlen($response);
// no filepointer and we're using or about to use more than 100k if (!$this->fp AND $this->response_length + $chunk_length >= 1024*100) { if ($this->fp = @fopen($this->vurl->tmpfile, 'wb')) { fwrite($this->fp, $this->response_text); unset($this->response_text); } }
if ($response) { if ($this->fp) { fwrite($this->fp, $response); } else { $this->response_text .= $response;
} }
$this->response_length += $chunk_length;
if ($this->vurl->options[VURL_MAXSIZE] AND $this->response_length > $this->vurl->options[VURL_MAXSIZE]) { $this->max_limit_reached = true; $this->vurl->set_error(VURL_ERROR_MAXSIZE); return false; }
return $chunk_length; }
/** * Performs fetching of the file if possible * * @return integer Returns one of two constants, VURL_NEXT or VURL_HANDLED */ function exec() { static $location_following_count = 0;
if ($this->fp) { fclose($this->fp); $this->fp = null; }
if ($result !== false OR (!$this->vurl->options[VURL_DIEONMAXSIZE] AND $this->max_limit_reached)) { if ($this->vurl->bitoptions & VURL_FOLLOWLOCATION AND preg_match("#\r\nLocation: (.*)(\r\n|$)#siU", $this->response_header, $location) AND $location_following_count < $this->vurl->options[VURL_MAXREDIRS]) { $location_following_count++; $this->vurl->set_option(VURL_URL, trim($location[1])); $this->reset(); return $this->exec(); }
// need to handle gzip if it was used if (function_exists('gzinflate')) { if (stristr($this->response_header, "Content-encoding: gzip\r\n") !== false) { $this->inflate_response('gzip'); } else if (stristr($this->response_header, "Content-encoding: deflate\r\n") !== false) { $this->inflate_response('deflate'); } }
return VURL_HANDLED; } } return VURL_NEXT; }
}
при возврате этого класса , начинает работать загрузка файлов (картинок)
посмотрев изменения, нашёл, что помимо других изменений был убран класс fsockopen
Он изменён, теперь это class vB_vURL_cURL
Проверил на чистом форуме (без хаков), у меня всё работает, без изменений.
Luvilla
Гость
Posts: n/a
@Whity, у меня тоже есть парочка чистых 4.2.2 PL2 и там всё прекрасно работает
cURL отсутсвует на сервере, вот она у тебя и не работала, такая загрузка
Luvilla
Гость
Posts: n/a
беру свои слова назад... (про курла)
резюме: разрабы - .... ***** ..... ну, все сами знают)
Только что перенесла на другой хост 4ку, 4.2.2 PL2, на которой ещё с утра без вопросов загружались картинки по ссылке
теперь они не грузятся
мирохост
@Whity
Специалист
Join Date: Jul 2005
Location: Москва
Награды в конкурсах:
Posts: 406
Версия vB: 3.8.x
Пол:
Reputation:
Professional 550
Репутация в разделе: 179
0
Вот вот...
Quote:
Originally Posted by Luvilla
резюме: разрабы - .... ***** ..... ну, все сами знают)
+100500
на моём сервере есть cURL, но картинки не грузится.
Luvilla
Гость
Posts: n/a
короткая версия: у кого на 4.2.2 PL_2 не работает загрузка картинок по ссылке, выход пока один: залить файл /includes/class_vurl.php от PL_1
если, конечно, она жизненно нужна, такая загрузка... не нужна - просто запретите, чтобы юзера не нарывались на дурное сообщение "Неверный адрес"
у кого работает... не дёргайтесь
Будем ждать, что по этому поводу расскажут высокооплачиваемые девелоперы
Проблема не в cURL или его версии, как может показаться с первого взгляда
дело там в настройке open_basedir
@Konkere
Знаток
Join Date: Dec 2005
Location: Москва
Posts: 567
Версия vB: 4.2.х
Пол:
Reputation:
Knowing 293
Репутация в разделе: 246
0
Quote:
Originally Posted by Luvilla
Будем ждать, что по этому поводу расскажут высокооплачиваемые девелоперы
Luvilla, начиная с 4.2.2pl2 только cURL, сокеты их чем-то напрягли
Quote:
Paul M added a comment - 14/Nov/14 04:34 PM
Please confirm cURL is installed and working, as noted above, vURL (using fsockopen) was removed.
Luvilla
Гость
Posts: n/a
Quote:
Originally Posted by Konkere
только cURL
который в вобле просто не работает
он и раньше не работал, до 4.2.2 PL2, только этого никто не знал, она уходила на сокет
а теперь - фигушки
Quote:
Originally Posted by Paul M
Please confirm cURL is installed and working
он и инсталлед, и воркинг, только open_basedir закрыт, "а в остальном, прекрасная маркиза, всё хорошо, всё хорошо..."
@Konkere
Знаток
Join Date: Dec 2005
Location: Москва
Posts: 567
Версия vB: 4.2.х
Пол:
Reputation:
Knowing 293
Репутация в разделе: 246
0
Quote:
Originally Posted by Luvilla
он и инсталлед, и воркинг, только open_basedir закрыт