В процессе оптимизации хостингов, решили мы перенести сайты с одного на другой, все сайты перенеслись нормально, а один начал выдавать ошибку 500, и имел довольно странную структуру, как оказалось сайт был сделан на Symfony.
Ниже я расскажу как перенести Symfony на новый хостинг рабоче-крестьянским методом, т.е. для тех кто этот фреймворк максимум «1 раз видел», итак — поехали.
Сначала немного теории — Symfony (впрочем как и другие фреймворки) все свои файлы хранит в корне домена, сама папка веб содержимого т.е. public_html удаляется, и вместо нее ставится символическая ссылка на точку отображения фронтенда, т.е. при нажатии на public_html вас должно перекинуть в район web/frontend (в моем случае), а т.к. символические ссылки привязаны к файловой системе, то на новом хостинге пути разумеется будут другие, то и перенаправления с public_html не происходит.
Поэтому первое что нужно сделать — это убедится в том, что символические ссылки перенеслись и исправить в них пути на корректные (в моем случае они потерялись при копировании), проще всего наверное это сделать через архив.
Выглядят ссылки в файловом менеджере каждого хостера по разному, например на бегете это так
В принципе тут и видно что это ссылка, а не директория, причем на Бегете как оказалось инструмента для редактирования не было, поэтому мне пришлось подключаться через SSH и исправлять через Midnight Commander через меню File-Edit Symlink. Кстати все битые симлинки будут в нем подсвечены красным цветом, поэтому не ошибетесь. Достаточно изменить путь на правильный у current и почти все станет выглядеть нормально.
Если Вы не дружите с SSH, то попросите это сделать техподдержку (и заодно сказать вам правильный путь к сайту), а вообще найти все поломанные симлинки через консоль можно командой
find -L . -type l -ls
Еще надо поправить такие ссылки
- ~current/config/databases.yml
- ~сurrent/log
- ~public_html/uploads
(вроде бы всё).
В папке releases могут лежать старые билды, в них в принципе можно ничего не трогать.
Второе — опять пути, но на этот раз к файлам
открываем папку /current/cache/frontend/prod/config и в файлах config_app.yml.php и config_autoload.yml.php меняем пути на правильные.
Когда я это уже сделал — то вычитал в интернете что можно было обновить кеш командой
./symfony cc
но это неточно
Третье — в этой же папке в файле config_databases.yml.php, нужно заменить доступы к БД, если они менялись.
На этом всё. Способ конечно рабоче-крестьянский, но если надо перенести Symfony на другой хостинг, «чтоб работало» а специалистов рядом нету, то сгодится.