Внимание! Для работы Yii2 у Вас должна быть версия PHP 5.4 или выше (если у Вас версия PHP ниже чем 5.4, то установите необходимую версию, при этом учитывайте различия в синтаксисе языка в зависимости от версии).
Для установки Yii2 необходимо установить Composer (Как установить Composer можно посмотреть здесь: кодер.укр/записи/установка_composer_на_windows).
Перед тем как приступить к установке Yii2, необходимо на github создать токен, иначе при установке Composer будет спрашивать этот токен и все на этом закончиться.
Для этого заходим на сайт github.com (я надеюсь Вы там зарегистрированы, если нет, то зарегистрируйтесь).
Переходим по ссылке https://github.com/settings/tokens для создания токена.
Жмем кнопку "Generate new token":
Вводим название для нашего токена в поле "Token description" и жмем "Generate token":
Скопируйте токен и сохраните его в безопасное место, он может еще пригодится:
Открываем консоль и вводим команду:
composer config -g github-oauth.github.com <oauthtoken>
где <oauthtoken> - Ваш токен
Жмем Enter. Все токен добавлен, переходим к установке Yii2.
Переходим в папку куда необходимо установить yii2. Вводим команду для устанавливает плагин composer asset plugin (для управления зависимостями пакетов bower и npm через Composer, команду вводим один раз):
composer global require "fxp/composer-asset-plugin:~1.0.3"
Затем команду:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
И тут моя первая ошибка, я не обратил внимания на проблему версии php. А заметил я это только во время написания статьи, ну да ладно, решил уже написать.
Установили. Теперь можем проверить, открываем браузер и вводи адрес проекта.
Если Вы увидели сайт, то все ок.
У меня было такая ошибка:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in Z:\home\yii2.test.local\www\basic\web\index.php on line 12
Что бы понять, чего не хватает Yii2 нужно перейти по адресу http://yii2.test.local/basic/requirements.php
.
По адресу http://yii2.test.local/basic/requirements.php
была такая ошибка:
Error
The path to yii framework seems to be incorrect.
You need to install Yii framework via composer or adjust the framework path in file requirements.php.
Please refer to the README on how to install Yii.
Warning: require_once(Z:\home\yii2.test.local\www\basic/vendor/yiisoft/yii2/requirements/YiiRequirementChecker.php) [function.require-once]: failed to open stream: No such file or directory in Z:\home\yii2.test.local\www\basic\requirements.php on line 23
Fatal error: require_once() [function.require]: Failed opening required 'Z:\home\yii2.test.local\www\basic/vendor/yiisoft/yii2/requirements/YiiRequirementChecker.php' (include_path='.;D:\web\usr\local\php5\pear') in Z:\home\yii2.test.local\www\basic\requirements.php on line 23
Решил я эту проблему следующим образом. Заходим на сайт http://www.yiiframework.com/download/. И качаем архив Yii 2 with basic application template. Из архива я скопировал папку vendor
в папку basic/web/
. Проверяю, все равно ошибка, но по адресу http://yii2.test.local/basic/requirements.php
вижу, что проблема в версии php:
Из скриншота видно, что необходимо установить PHP 5.4 или выше. Так как я пользуюсь (пользовался) denwer и обнаружил, что там PHP 5.4 нет. Решил установить OpenServer (да я не заморачиваюсь с чистой установкой PHP, Apache, MySql)
Скачать OpenServer можно бесплатно с официального сайта http://open-server.ru/. Качаем и устанавливаем.
Установили. Запускаем, в настройках указываем PHP 5.6 и Apache 2.4 (иначе PHP 5.6 не будет работать). Для этого в трее правой кнопкой мыши кликаем по значку OpenServer и выбираем пункт, настройки:
И указываем необходимые настройки модулей:
Теперь переходим в папку OpenServer/domains
и создаем там папку для проекта (у меня это yii2.ostest.local
), копируем туда папку basic
. Запускаем OpenServer.
Проверяем, открываем проект по адресу http://yii2.ostest.local/basic/requirements.php
, все хорошо:
Открываем проект по адресу http://yii2.ostest.local/basic/web/
и...
Опять ошибка, да что ж такое:
Invalid Configuration – yii\base\InvalidConfigException
yii\web\Request::cookieValidationKey must be configured with a secret key.
...
Тут проблема в том, что нужно задать секретный ключ (cookieValidationKey
), он нужен для валидации cookie. По идеи он должен был заполниться автоматически при установки с помощью композера, но что-то пошло не так. Способов решения этой ошибки 2:
Первый способ, задать ключ руками:
//... 'cookieValidationKey' => 'mySuperSecretKey010', //...
Второй способ, отключить его:
//... 'enableCookieValidation' => false, 'enableCsrfValidation' => false, 'cookieValidationKey' => '', //...
Запускаем опять.
Вот как выглядит стартовая страница в Yii2 :)
Проверяем, переходим на внутренние страницы, все ок.
После этого у появилась идея, может проблема с установкой была из-за того, что у меня изначально версия PHP была 5.3.
Решил я это дело проверить. У OpenServer есть своя консоль, т.е. php в переменные среды добавлять не надо, хорошо, запускаем эту консоль.
Для запуска встроенной консоли необходимо кликнуть правой кнопкой мыши по иконке OpenServer в трее, выбрать пункт меню "Дополнительно", "Консоль" [Меню → Дополнительно → Консоль].
Переходим в папку с проектом. Я так понимаю у OpenServer свой Composer, поэтому выполним все шаги сначала. Добавим токен командой:
composer config -g github-oauth.github.com <oauthtoken>
где <oauthtoken> - Ваш токен, который мы сгенерировали вначале статьи.
Выполним установку плагин composer asset plugin:
composer global require "fxp/composer-asset-plugin:~1.0.3"
Устанавливаем Yii2 basic командой:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
Ждем пока установиться
Готово. Проверяем, исходя из ошибок, которые у меня были ранее, я сначала проверю создана ли папка vendor
. Ага есть такая папка. Теперь проверю был ли сгенерирован ключ cookieValidationKey
, открываю файл config/web.php
. О чудо и он есть 'cookieValidationKey' => 'sddsEPwb7KjtUp-3K8Q4SkuKucLvRw2r'
.
Ну теперь запускаем браузер и открываем проект. Все работает)
Отлично. Все таки версия PHP при установки повлияла, а может еще что-то. Т.к. у OpenServer свой php, composer и прочее.
Теперь установим версию advanced. Но для начала надо разобраться в чем же разница между basic и advanced.
Если по простому, то basic - это одно приложение, advanced - это 3 приложения (frontend, backend, console) и папка common, для общих классов.
Вроде разобрались, перейдем к установке, исходя из опыта описанного выше. Создаем папку для проекта (у меня это yii2.test3.local
), перезапускаем OpenServer, переходим в папку проекта(в консоле) и вводим команду установки Yii2 advanced в консоль:
composer create-project --prefer-dist yiisoft/yii2-app-advanced yii-application
Ждем пока установиться. Далее необходимо выполнить инициализацию проекта, для этого выполняем команду:
php yii-application/init
Выбираем Development (0), вводим yes
и жмем Enter
Далее создаем БД в phpMyAdmin. И настраиваем соединение с ней. Для этого необходимо открыть файл yii-application/common/config/main-local.php
.
И ввести необходимые параметры.
Теперь необходимо применить миграцию(для переноса стандартных таблиц migration и user в нашу БД), в консоле переходим в папку yii-application
и выполняем команду:
yii migrate
Все, проект готов к работает
Доступ к сайту открыт по пути http://yii2.test3.local/yii-application/frontend/web/
, а админка по пути http://yii2.test3.local/yii-application/backend/web/
. Но это не самый лучший способ работы.
Мы можем добавить алиасы для сайта и админки. В OpenServer это делаеться так: открываем "Настройки", вкладка "Домены", "Управление доменами" - выбрать "Ручное + Автопоиск" и добавляем 2 алиаса.
Имя домена | Папка домена |
yii2.test3.local | \yii2.test3.local\yii-application\frontend\web |
admin.yii2.test3.local | \yii2.test3.local\yii-application\backend\web |
Добавили и жмем кнопку "Сохранить", после чего сервер будет перезагружен.
Все готово, открываем браузер и вводим в адресную строку http://yii2.test3.local/
.
Вот и наш сайт.
Теперь откроем админку, вводим http://admin.yii2.test3.local/
И видим админку
Вот такое приключение :) Продолжение следует...
Комментарии
Привет.
ОтветитьВыдает такую ошибку, в чем проблема?
[InvalidArgumentException]
Could not find package yiisoft/yii2-app-basic with stability stable.
create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--r
epository-url REPOSITORY-URL] [--dev] [--no-dev] [--no-plugins] [--no-custom-ins
tallers] [--no-scripts] [--no-progress] [--keep-vcs] [--no-install] [--ignore-pl
atform-reqs] [--] [<package>] [<directory>] [<version>]
Выполните эти 2 команды:
Ответитьcomposer global require "fxp/composer-asset-plugin:1.0.0-beta2"
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
Если ошибка повторится, то вы можете попробовать установить последнюю версию которая находиться в стадии разработки. Для этого выполните команду:
composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
Огромное человеческое спасибо! тоже пользуюсь openserver и возникали такие же баги
ОтветитьКраткие инструкции по этой теме:
ОтветитьYii2 Basic:
http://кодер.укр/записи/как-установить-yii2-basic-краткая-инструкция
Yii2 Advanced:
http://кодер.укр/записи/как-установить-yii-2-advanced-краткая-инструкция
Спасибо за советы и статью. Я новичек и почемуто при нажатии на папку web не открывается фреймвок а открывается ее содержимое а в браузере показывает содержимое папки index.php, хотя ошибок при установке не выдавал и папка vendor создалась и validationkey прописаны. В чем проблемы? Пользуюсь Опенсерверомю Проект устанавливал как в Опенсервере так и в корнеб результат одинаков. Помогите пожалуйста!
ОтветитьПопробуйте сделать как описано здесь:
ОтветитьКак установить Yii 2 basic, краткая инструкция: кодер.укр/записи/как-установить-yii2-basic-краткая-инструкция
или здесь:
Как установить Yii 2 advanced, краткая инструкция: кодер.укр/записи/как-установить-yii-2-advanced-краткая-инструкция
Если не получится, то пишите, поможем по возможности
Не нужно было прописывать cookieValidationKey он запишется туда когда запустите файл init
ОтветитьИнтересно написано :) Читал и ждал момента про htacccess, но не дождался :) Вам наверное повезло больше. Кстати, попробовал Ваш вариант из статьи из advanced, у меня не сработал. Мой настроен несколько иначе. Хотя тоже ОпенСервер.
ОтветитьСпасибо, а как у Вас настроено?
ОтветитьAddDefaultCharset utf-8
ОтветитьOptions -Indexes
RewriteEngine on
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} admin
RewriteRule .* backend/web/index.php [L]
RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
RewriteRule ^images/(.*)$ frontend/web/images/$1 [L]
RewriteRule ^files/(.*)$ frontend/web/files/$1 [L]
RewriteRule (.*) frontend/web/$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . frontend/web/index.php
</IfModule>
Добавь цвета, используй Git Bash, Люк!
ОтветитьА где потом искать пароль и логин админки, чтобы поменять его?
Ответить