Fork me on GitHub

Начало работы

Добро пожаловать в Silex-MVC!

Это приложение является обучающим примером использования шаблона проектирования MVC на базе SILEX (PHP микро-фреймворка, созданного на основе Symfony 2 компонентов). Целью данного приложения является показать использование некоторых возможностей SILEX фреймворка, а также использование других технологий. Примеры установки фреймворка приведены для Windows и веб сервера Nginx.

Чтобы начать работать с этим приложением нужно выполнить некоторые шаги:

  1. Должны быть выполнены предварительные требования
  2. Загрузить и установить Silex-MVC
  3. Сконфигурировать локальный веб сервер, чтобы точка входа была public/index.php
  4. Открыть сайт в браузере

Предварительные требования

Загрузить и установить Silex-MVC

Зайти на Git с нашим проектом.

Клонировать или загрузить проект в соответствующую папку (например C:/NginxServer/html/silex-mvc).

Зайти в папку, куда было установлено приложение и выполнить из консоли команду composer install

Для функционирования приложения необходимо создать базу данных с соответствующими данными.

Для этого необходимо выполнить из консоли командный файл app/Console/scripts/orm/schema_create.bat, предварительно отредактировав путь к php.exe.

Сконфигурировать веб сервер

Установить, если необходимо, соответствующие права на запись в path/to/project/var

В зависимости от вида веб сервера возможна разная конфигурация.

Например, для сервера Nginx возможна такая конфигурация в файле nginx.conf:

worker_processes 1;

error_log logs/error.log;

events {
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    gzip on;

    # File size for upload
    client_max_body_size 1024m;
    client_body_timeout 120s; 
    client_body_buffer_size 128k;

    upstream backend {
        server 127.0.0.1:9000;
    }

    server {
        listen      8080;
        server_name localhost;
        root        html/;

        location / {
            index   index.html index.php;
        }

        location ~ \.php$ {
            include       fastcgi_params;
            fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }
    }

    server {
        listen          8080;
        server_name     ~^(?<domain>.+);
        gzip            on;
        ssi             off;

        root  html/$domain/public;

        location    @phpfcgi {
            internal;        
            fastcgi_buffers 16 16k;
            include fastcgi_params;
            fastcgi_param    REQUEST_URI   $request_uri;
            fastcgi_param    SCRIPT_NAME    /index.php;
            fastcgi_param    SCRIPT_FILENAME $document_root/index.php;
        }

        location     ~ \.(php|php/.*)$ {
            fastcgi_buffers 16 16k;
            include fastcgi_params;
            fastcgi_param    SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        }
    }
}

Если у вас сервер Apache, то можно в httpd.conf создать виртуальный хост, например так:

NameVirtualHost *:8080

# localhost
<VirtualHost *:8080>
ServerName localhost
DocumentRoot "C:/Xampp/htdocs"
</VirtualHost>

# silex-mvc
<VirtualHost *:8080>
    ServerName silex-mvc
    DocumentRoot "C:/Xampp/htdocs/silex-mvc/public"
    ServerAdmin webmaster@read.local
    <Directory "C:/Xampp/htdocs/silex-mvc/public" >
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Сервер Apache должен поддерживать режим mod_rewrite.

Вы также должны убедиться, что Apache настроен на поддержку .htaccess файлов.

Файл .htaccess должен находиться в папке public/. Содержание файла .htaccess может быть таким:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Для Windows в файле c:\Windows\System32\drivers\etc\hosts необходимо прописать

127.0.0.1       silex-mvc

Если используется прокси, то нужно в параметрах прокси сервера в разделе Не использовать прокси сервер для адресов, начинающихся с прописать наш адрес

...;silex-mvc

Открыть сайт в браузере

Убедиться что веб сервер запущен. Ввести в адресную строку браузера например такой адрес: http://silex-mvc:8080/