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.
Финальную проверку после переключения домена сверьте с общим чек-листом из статьи чеклист проверки сайта после миграции.