Установка OcStore 2.3 на хостинг Timeweb с php 7.4
Для корректной установки и работы Ocstore 2.3 необходима версия PHP от 5.6 до 7.3, база данных: MySQL 5.5+ или MariaDB 10.0+ и обязательные PHP-расширения: curl, gd, mbstring, openssl, zip, zlib, mysqli. Но на PHP 7.4 версия 2.3 тоже может работать. Проблемы будут при установке, но любые проблемы можно решить!
Установка
Первая проблема с установкой касается mcrypt - эта функция была убрана из PHP, как устаревшая. Проверка mcrypt выполняется на втором шаге установки и ещё в одном месте. Чтобы обойти ошибки, нужно сделать следующее:
1. Открыть install\cli_install.php, там найти и удалить код:
if (!function_exists('mcrypt_encrypt')) {
$error = 'Warning: mCrypt extension needs to be loaded for OpenCart to work!';
}
2. На втором шаге установки в install\controller\install\step_2.php найти и удалить код:
$data['text_mcrypt'] = $this->language->get('text_mcrypt');
затем
$data['mcrypt_encrypt'] = function_exists('mcrypt_encrypt');
и ниже
if (!function_exists('mcrypt_encrypt')) {
$this->error['warning'] = $this->language->get('error_mcrypt');
}
3. После исключения ошибок, связанных с mcrypt, на некоторых хостингах установка OcStore запускается и выполняется нормально. Однако, бывают и исключения.
OcStore 2.3 на хостинге Timeweb
Если устанавливать OcStore 2.3 на Timeweb с PHP 7.4, то нужно также удалить из установки всё, что связно с mcrypt, однако на предпоследнем шаге, после указания данных для доступа к базе данных и административной части сайта, установка падает в ошибку 500. Никаких логов или других сообщений о причинах ошибки не возникает.
Проблема на этом этапе заключается в том, что на MySQL 5.7+ (и особенно на 8.0) значение 'MYSQL40' больше не поддерживается, поэтому установка прерывается. Для исправления, нужно открыть файл /install/model/install.php, найти следующий код:
$db->query("SET @@session.sql_mode = 'MYSQL40'");
и заменить его на:
$db->query("SET @@session.sql_mode = ''");
Установка пройдёт успешно и вы увидите последнюю страницу с данными для входа в админку и необходимостью удалить папку Install. Успехов!