Удобное размещение папки с проектом Symfony
На практике столкнулся с хостингом (netpoint), где стандартное устройство папок Symfony может не заработать. Здесь я опишу как нашёл решение такой проблемы.
На хостинге, который я обычно использую, сделали большую бяку, которая мешает жить порой. А именно там стоит запрет на подключение файлов, находящихся ниже уровня web_dir. Это настройка в php.ini include_path=.;... вот эта самая первая точечка портит картину маслом. То есть я не могу, как в инструкции Symfony сказано, закинуть содержимое myproject/web в корень веб-каталога на сервер, а весь проект положить рядом с ним в недосягаемости хакеров. Пришлось напрячь мозг и изобрести щадящий метод реорганизации папок. Хочу узнать как он вам, стоит ли внимания такой способ и насколько по-вашему он безопасен.
Как обычно, я закачиваю всё из symfony/web в корень веб-каталога. Теперь всю папку проекта (в моём случае myproject) я закидываю в этот же веб каталог. Получается:
|--+ public_html
|--+ myproject
| |-- apps
| |-- cache
| |-- congig, и так далее
|-- css
|-- js
|-- images, и так далее
Изменяю то что обычно меняют в файле index.php и всё начинает работать. Но есть один нюанс, ради которого проект кладут отдельно. Если папка проекта не достаточно надёжно спрятана, или названа не достаточно длинно/хитро, то ваши конфиги с паролями к базе данных станут известны всему миру. Что делать? Решение пришло неожиданно. Кладу в папку myproject .htaccess файл, который просто запрещает доступ к внутренностям. Содержимое .htaccess такое:
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Deny from all
</Limit>
На все запросы к папке проекта сервер теперь выдаёт Forbidden и все конфиги в целости и сохранности. По-моему проблема решена?
Кстати сказать, такой способ мне нравится куда больше и на своём dev-сервере. Я изначально создаю такую же структуру чтобы потом легко синхронизировать проект с production.
