- Начало
- Основы
- Работа с формами
- Работа с БД
- Кэширование
- Расширение Yii
- Тестирование
- Специальные темы
- Автоматическая генерация кода
- Управление URL
- Аутентификация и авторизация
- Темы оформления и скины
- Журналирование
- Обработка ошибок
- Веб-сервисы
- Интернационализация (I18N)
- Альтернативный язык шаблонов
- Консольные приложения
- Безопасность
- Улучшение производительности
- Генерация кода при помощи консоли (устаревшее)
Конфигурация веб-серверов Apache и Nginx
Apache
Yii готов к работе с настроеным по умолчанию Apache. Файлы
.htaccess во фреймворке и директориях приложения ограничивают доступ к
некоторым ресурсам. Для сокрытия файла точки входа (обычно это index.php) в
URL можно добавить инструкцию для модуля mod_rewrite в файл .htaccess
в корневой директории приложения или в настройках виртуальных хостов:
RewriteEngine on
# если директория или файл существуют, использовать их напрямую
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# иначе отправлять запрос на файл index.php
RewriteRule . index.php
Nginx
Yii можно использовать с веб-сервером Nginx и PHP с помощью FPM SAPI. Ниже приведён пример простой конфигурации хоста. Он определяет файл точки входа и заставляет Yii перехватывать все запросы к несуществующим файлам, что позволяет создавать человекопонятные URL-адреса.
server {
set $host_path "/www/mysite";
access_log /www/mysite/log/access.log main;
server_name mysite;
root $host_path/htdocs;
set $yii_bootstrap "index.php";
charset utf-8;
location / {
index index.html $yii_bootstrap;
try_files $uri $uri/ /$yii_bootstrap?$args;
}
location ~ ^/(protected|framework|themes/\w+/views) {
deny all;
}
#отключаем обработку запросов фреймворком к несуществующим статичным файлам
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
# передаем PHP-скрипт серверу FastCGI, прослушивающему адрес 127.0.0.1:9000
#
location ~ \.php {
fastcgi_split_path_info ^(.+\.php)(.*)$;
#позволяем yii перехватывать запросы к несуществующим PHP-файлам
set $fsn /$yii_bootstrap;
if (-f $document_root$fastcgi_script_name){
set $fsn $fastcgi_script_name;
}
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fsn;
#PATH_INFO и PATH_TRANSLATED могут быть опущены, но стандарт RFC 3875 определяет для CGI
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fsn;
}
location ~ /\.ht {
deny all;
}
}
Используя данную конфигурацию, можно в файле php.ini установить опцию cgi.fix_pathinfo=0 во избежание множества нежелательных системных вызовов stat().
