Почему не устанавливается 1с битрикс на php 8?
Пытаюсь поставить на openserver, недавно уже ставил все работало, но там php требовался от 7 версии, сейчас скачал новый установщик (php скрипт), теперь там php версия от 8, появляется эта ошибка в самом начале установки:
Повторите установку текущего шага. В случае повторения ошибки пропустите шаг. Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 262144 bytes) in C:\OSPanel\domains\bitrix.test\bitrix\modules\main\lib\security\random.php on line 218 Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 262144 bytes) in Unknown on line 0 Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 262144 bytes) in C:\OSPanel\domains\bitrix.test\bitrix\modules\main\lib\session\handlers\abstractsessionhandler.php on line 78
В php.ini memory_limit ставил на -1 и просто увеличивал, не помогает, что делать?
Ответы (3 шт):
Как вариант, попробуйте в файле
\bitrix\modules\main\lib\session\handlers\abstractsessionhandler.php
в строке
$this->lastCreatedId = Random::getString(32, true);
вместо 32 поставить 16
$this->lastCreatedId = Random::getString(16, true);
Мне помогло только полное закрытие функции getString в файле
\bitrix\modules\main\lib\security\random.php
В самой функции сразу же делаю return "...";
public static function getString($length, $caseSensitive = false)
{
return "qwerty";
//...
}
В интернете ответ уже есть, пусть тут тоже будет, вдруг кто наткнется.
при установке изменить в файле /bitrix/modules/main/lib/security/random.php в методе getStringByCharsets($length, $charsetList) - строка 114.
Внимание! После установки Битрикса в файле возвращаем всё обратно, иначе не работает авторизация вообще!
public static function getStringByCharsets($length, $charsetList)
{
// Временно возвращаем "свою" рандомную строку
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$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;
}