Категории форума

Cotonti Verona (Ошибка при обновлении) на локал

Fatal error: Uncaught TypeError: Cannot access offset of type string on string in .../install.php:119


webitproff
webitproff • 28.04.2026 19:56 #1

Что произошло 
На строке 119: 

$file['config'] = './datas/config.php';

PHP пытается сделать $file['config'] = ...,  
но переменная $file в этот момент — строка, а не массив. 

В PHP 8+ это строгое TypeError (в PHP 7 было только Warning). 

Почему так случилось
Скорее всего, где-то раньше в коде (в подключенных файлах: functions.php, config.php/config-sample.php, CotDB или Cot::init()) переменная $file была перезаписана строкой. 


Как быстро исправить 

Самое простое и рабочее решение — добавить принудительную инициализацию массива перед строкой 119:

 

// НАЧАЛО: указываем принудительно что переменная $file есть массив
if (!is_array($file)) {
   $file = [];
}
// КОНЕЦ: указываем принудительно

// больше никаких правок
$file['config'] = './datas/config.php';
$file['config_sample'] = './datas/config-sample.php';
$file['sql'] = './setup/install.sql';

 

 

 

🗿

🧙‍♂️ Радуйся, странниче добрый и честный! Не понапрасну привела тя стезя в земли сии. Зде бо мужи мудры и искусники дела писменнаго и численнаго, что куют словеса и плетут узоры кода, тайны разгадывают и знанием делятся, летописи множа и ремесло цифровое творя.
⬅️ Аще налево пойдеши — обрящеши грамоты древния, писания старинныя и свитки учения. ⬆️ Аще прямо — слово мудрое и совет от мужей разумеющих, что в деле кодописном искусны, получиши. ➡️ Аще направо — сам в писцы и летописцы внидеши, и в ремесло цифровое, где строки и знаки в дело живое обращаются, слово свое в память веков вложиши.
📝 Не медли же — нареки имя свое, и вниди в чин наш, и стань с нами в братстве, где код есть магия, а строки — заклятия живыя, числом и буквою слово едины суть.
🏰 Не тайно есть собрание сие, и не инициации в нем, но многое сокрыто от пришлых и ступалого, понеже не всякому открывается знание, но токмо ищущим и пребывающим в деле сем.