Установка микро-фреймворка Silex под Apache2

Установка этого фреймворка достаточно проста, тем более, если вы используете пакетный менеджер Composer

Идем на официальный сайт фреймворка и видим два варинта установки:

  1. Как компонент для уже имеющийся системы
  2. Как скелетон приложение

Нас интересует второй вариант, так как мы будем создавать новое приложение на базе Silex. Выполняем в консоле команду:

$ composer create-project fabpot/silex-skeleton path/to/install "^2.0"

И вуаля — приложение установилось. Теперь давайте настроим наш сервер. Идем в гугл и находим базовый конфиг для apache2

<VirtualHost *:80>
	ServerName silex.loc
	ServerAlias silex.loc

	DocumentRoot /var/www/silex.loc/web # путь к папке с установленным проектом
	DirectoryIndex index_dev.php # поскольку мы работаем на локальной машине, то лучше использовать этот файл для старта приложения
	<Directory "/var/www/silex.loc/web">
		AllowOverride All
		Allow from All
	</Directory>
</VirtualHost>

Прописываем локальный домен в файле /etc/hosts — у меня это, как видно из настроек сервера — http://silex.loc/. Далее перезапускаем apache, кто запамятовал команду:

$ sudo service apache2 restart

Теперь идем проверять работу фреймворка в веб-браузер, но тут нас ожидает первый факап:

Attempted to load interface "ResetInterface" from namespace "Symfony\Contracts\Service"
Silex ClassNotFoundException

Это странно, ведь при установке никаких ошибок не было. Оказывается была одна неточность, а именно, когда мы установили фреймворк через Composer, его файл, который хранит все зависимости оказался не полным! Чтобы это исправить, добавим нужный пакет. В корне проекта выполняем в консоле команду:

$ composer require symfony/service-contracts

Теперь идем снова в браузер и снова неудача:

Silex: Unable to create the storage directory
Silex RuntimeException

Ну здесь все просто, у фреймворка есть папка, куда он пишет логи и складывает кеш файлов и как раз у него нет прав это делать. Для этого нам надо установить рекурсивно нужные права на папку (локально мы установим полные права) командой:

$ sudo chmod 777 -R var/

Обновляем браузер и вуаля!

Welcome to your new Silex Application!

На этом установка завершена и можно приступать к следующему шагу.