В файле /bitrix/modules/main/lib/security/random.php
В методе getStringByCharsets($length, $charsetList) - строка 114
Происходит получение рандомной строки.
Ломается что-то на строке 117, в методе static::getBytes($length)
Что конкретно ломается - сильно вникать не стал.
Но учитывая то, что скрипт установки хочет получить рандомную строку, то хорошо, временно поправил метод чтобы он вернул рандомную строку.
Получилось вот так:
[CODE]/**
* Returns random (if possible) string for a given charset list.
*
* @param int $length Result string length.
* @param string $charsetList Charset list, must be ASCII.
* @return string
*/
public static function getStringByCharsets($length, $charsetList)
{
// Временно возвращаем "свою" рандомную строку
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ';
$randstring = '';
for ($i = 0; $i < 10; $i++) {
$randstring = $characters[rand(0, strlen($characters))];
}
return $randstring; // Конец
$charsetVariants = strlen($charsetList);
$randomSequence = static::getBytes($length);
$result = '';
for ($i = 0; $i < $length; $i++)
{
$randomNumber = ord($randomSequence[$i]);
$result .= $charsetList[$randomNumber % $charsetVariants];
}
return $result;
}
[/CODE]
При таком подходе, при возврате "своей" рандомной строки, установщик успешно установил все файлы и модули.
В методе getStringByCharsets($length, $charsetList) - строка 114
Происходит получение рандомной строки.
Ломается что-то на строке 117, в методе static::getBytes($length)
Что конкретно ломается - сильно вникать не стал.
Но учитывая то, что скрипт установки хочет получить рандомную строку, то хорошо, временно поправил метод чтобы он вернул рандомную строку.
Получилось вот так:
[CODE]/**
* Returns random (if possible) string for a given charset list.
*
* @param int $length Result string length.
* @param string $charsetList Charset list, must be ASCII.
* @return string
*/
public static function getStringByCharsets($length, $charsetList)
{
// Временно возвращаем "свою" рандомную строку
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW
$randstring = '';
for ($i = 0; $i < 10; $i++) {
$randstring = $characters[rand(0, strlen($characters))];
}
return $randstring; // Конец
$charsetVariants = strlen($charsetList);
$randomSequence = static::getBytes($length);
$result = '';
for ($i = 0; $i < $length; $i++)
{
$randomNumber = ord($randomSequence[$i]);
$result .= $charsetList[$randomNumber % $charsetVariants];
}
return $result;
}
[/CODE]
При таком подходе, при возврате "своей" рандомной строки, установщик успешно установил все файлы и модули.