# Перенесення PrestaShop на інший хостинг: покроковий план

> Перенесення PrestaShop на інший хостинг: експорт бази даних, перенесення файлів і налаштування parameters.php.

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 є у статті [перенесення файлів сайту](https://www.zevshost.net/uk/kb/migratsia-failov-rsync-scp/). Після копіювання перевірте права на каталог `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](https://www.zevshost.net/uk/kb/perenesti-bazu-dannykh/). Зверніть увагу на префікс таблиць — за замовчуванням `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` з різних серверів. Детальна схема перемикання без простою — у статті [зміна хостингу без простою](https://www.zevshost.net/uk/kb/migratsia-dns-bez-prostoya/).

## Чек-лист міграції PrestaShop

- Версія PHP на новому сервері відповідає версії PrestaShop.
- Каталоги img і modules перенесено повністю.
- Дамп бази імпортовано, префікс таблиць перевірено.
- Файл parameters.php і таблиця ps\_shop\_url оновлені.
- Кеш var/cache очищено після правки конфігурації.
- Оформлення замовлення і вхід до адмінки перевірено за IP.

Фінальну перевірку після перемикання домену звірте із загальним чек-листом зі статті [чеклист перевірки сайту після міграції](https://www.zevshost.net/uk/kb/migratsia-proverka-posle/).

---

Джерело: https://www.zevshost.net/uk/kb/migratsia-prestashop/
