Интересный сегодня баг поймал ))
Создал базу данных и к ней юзера c паролем через ISPmanager. Закинул скрипт CS-Cart, запустил install, ввел данные базы и после завершения установки получил красную медальку “SERVICE UNAVAILABLE” и ошибку:
Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'username'@'172.17.0.1' (using password: YES) in /path/to/script/app/Tygh/Backend/Database/Mysqli.php on line 47
полчаса голову ломал, не первая установка магазина же… оказывается я пароль сгенерировал хитрый, типа: j-[z}f,v}'ExmKy
из-за кавычки )) интересный факт, что установщику эта кавычка не помешала создать таблицы в базе.
А в файле config.local.php что в строчке
$config['db_password'] = 'j-[z}f,v}'ExmKy';
кавычка задублирована
$config['db_password'] = 'j-[z}f,v}''ExmKy';
или изъята
$config['db_password'] = 'j-[z}f,v}ExmKy';
?
было так:
$config['db_password'] = 'j-[z}f,v}\'ExmKy';
но я вообще пароль поменял на другой.
ну это в корне неверно
$config['db_password'] = 'j-[z}f,v}'ExmKy';
верно с экранированием
$config['db_password'] = 'j-[z}f,v}\'ExmKy';
или кавычку обернуть в двойную кавычку
$config['db_password'] = "j-[z}f,v}'ExmKy";
Согласен. Только файл конфига создаётся автоматом и по идее это не моя задача ловить кавычки по скриптам )) Не считаю это ужасным багом, но для информации тем кто генерит безумные пароли пригодится.
Офтоп: alex_vp, а как здесь так красиво код подсвечивать?
Я именно об этом, разработчики упустили из вида такой вариант развития событий, по факту при записи в файл требуется экранирование кавычки при ее наличии.
Здравствуйте!
Экранирование спецсимволов было добавлено в версии 4.11.5, пожалуйста, уточните, в какой версии вам удалось воспроизвести проблему?
В качестве проверки я создал нового пользователя и выполнил установку CS-Cart версии 4.13.3, ошибку не воспроизвёл, в config.local.php кавычка в пароле заэкранировалась.
Версию не помню. В свежей версии проблема не наблюдается.