PrestaShop зберігає параметри підключення до бази даних у файлі app/config/parameters.php і жорстко перевіряє відповідність домену в таблиці ps_shop_url. Забута правка будь-якого з цих двох місць — найчастіша причина білого екрана після перенесення магазину.
Що врахувати перед перенесенням PrestaShop
Перед стартом визначте версію PrestaShop командою php bin/console prestashop:version або перегляньте файл app/AppKernel.php у старих версіях 1.6. Вимоги до сервера відрізняються залежно від гілки:
| Компонент | PrestaShop 1.6 | PrestaShop 8 |
|---|---|---|
| PHP | 7.1–7.4 | 8.1–8.3 |
| MySQL | 5.6–5.7 | 8.0 |
| Розширення intl | обов'язково | обов'язково |
| Composer | не потрібен | 2.x |
Уточніть версію PHP заздалегідь — PrestaShop 1.6 не запуститься на PHP 8.3, а PrestaShop 8 вимагає щонайменше PHP 8.1.
Перенесення файлів магазину
Каталог img/p із зображеннями товарів і modules зі встановленими платними модулями переносьте разом із ядром через rsync:
rsync -avz --progress /var/www/prestashop/ user@newserver:/var/www/prestashop/
Загальний розбір rsync, SCP і FTP є у статті перенесення файлів сайту. Після копіювання перевірте права на каталог var/cache — він повинен бути доступний на запис користувачу веб-сервера, інакше адмінка видасть помилку доступу при першому відкритті.
Експорт і імпорт бази даних
Експортуйте базу через панель «Розширені налаштування → База даних → Резервне копіювання» або з консолі:
mysqldump -u ps_user -p --single-transaction ps_db > ps_backup.sql
На новому сервері створіть базу з такою самою назвою або новою і імпортуйте дамп:
mysql -u ps_user -p ps_db < ps_backup.sql
Загальний алгоритм перенесення MySQL описано у статті перенесення бази даних MySQL. Зверніть увагу на префікс таблиць — за замовчуванням ps_, але на старих магазинах він може бути змінений під час встановлення.
Налаштування parameters.php і таблиці shop_url
У файлі app/config/parameters.php оновіть значення database_host, database_name, database_user і database_password на дані нового сервера. Потім відкрийте таблицю ps_shop_url і перевірте поля domain і domain_ssl — вони вказують на стару адресу, магазин перенаправить усі запити назад на попередній хостинг.
UPDATE ps_shop_url SET domain = 'newshop.example', domain_ssl = 'newshop.example';
Після правки очистіть кеш Symfony, інакше PrestaShop продовжить використовувати старі скомпільовані налаштування:
rm -rf var/cache/prod/*
rm -rf var/cache/dev/*
Перевірка вітрини і адмінки
Відкрийте магазин на новому сервері за IP із підміною хоста в локальному файлі /etc/hosts. Перевірте вхід до адмінки за адресою /admin123 (папка адмінки перейменована з міркувань безпеки), оформлення тестового замовлення і завантаження зображень товарів.
Тест пройдено — зменшіть TTL A-запису домену до 300 секунд за добу до перемикання і після зміни DNS перевірте поширення командою dig +short newshop.example з різних серверів. Детальна схема перемикання без простою — у статті зміна хостингу без простою.
Чек-лист міграції PrestaShop
- Версія PHP на новому сервері відповідає версії PrestaShop.
- Каталоги img і modules перенесено повністю.
- Дамп бази імпортовано, префікс таблиць перевірено.
- Файл parameters.php і таблиця ps_shop_url оновлені.
- Кеш var/cache очищено після правки конфігурації.
- Оформлення замовлення і вхід до адмінки перевірено за IP.
Фінальну перевірку після перемикання домену звірте із загальним чек-листом зі статті чеклист перевірки сайту після міграції.