Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Перейти на сайт->

Бесплатный Курс "Практика HTML5 и CSS3"

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Начать->

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.

Верстайте на заказ и получайте деньги.

Получить в подарок->

Бесплатный курс "Сайт на WordPress"

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Получить в подарок->

*Наведите курсор мыши для приостановки прокрутки.


Обновление CodeIgniter с версии 1.7.2 до 2.0

После долгих эволюционных изысканий и доработок, продолжавшихся примерно один год, ребята из EllisLab выпустили-таки долгожданное обновление фреймворка CodeIgniter. Многие этого ждали, и самое главное изменение - это то, что теперь фреймворк полностью перестал поддерживать PHP4, и PHP5 - теперь необходимое условие его работы.

В этой заметке я хочу рассказать Вам о том, какие шаги предпринял именно я для того, чтобы обновить свою версию с 1.7.2 до 2.0.

В общем и целом "переезд" прошел быстро и гладко, хотя не обошлось без сюрпризов и неожиданностей.

Как известно, ни одно руководство не может в точности поведать Вам то, как именно что-то нужно делать. Всегда найдется что-то, что именно Вам делать не нужно и то, что нужно сделать несмотря на то, что это нигде не написано:)

Официальное руководство по переезду не оказалось исключением.

Итак, мои действия и комментарии:

1. Сначала создаем статичный файл (если у Вас его еще нет) для того, чтобы показывать его посетителям Вашего сайта, пока Вы колдуете над обновлением. Я свой назвал просто - index.htm и поместил в него кратенькое сообщение о том, что идут технические работы и т.п.

Хостинг

2. Следующим шагом я отметил для себя то, какие изменения я вносил внутри папки system. Оказалось - всего парочку. Одно - в библиотеке Validation и еще одно - добавлял в папку fonts свой шрифт для генерации капчи. У Вас, естественно, могут быть другие изменения, а может и не быть их вообще, что еще удобнее.

Смысл в том, чтобы потом Вы смогли восстановить внутри новой папки system то, что Вы изменяли специально под себя.

3. Далее я удалил все, что было внутри папки system (кроме папки application, в которой и находится наше приложение) и закачал в нее все то, что было внутри папки system в новой версии CodeIgniter. После этого внес те изменения, которые отметил в шаге 2.

4. Потом в файл .htaccess, лежащий в корне сайта я добавил строку:

ErrrorDocument 404 /index.htm

Такой записью мы говорим серверу, что если он не найдет запрашиваемого документа (а он не найдет, так как мы все уже удалили:), то пользователю нужно "вручить" файл с именем index.htm, лежащий в корне сайта.

Там же, в .htaccess добавляем еще одно условие, а именно: мы не хотим, чтобы при обращении к файлу index.htm происходила переадресация на главный файл CodeIgniter - index.php. В итоге получаем что-то в этом роде:

RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt|img|styles|demo|files|js|recommend|products|index\.htm)
RewriteRule ^(.*)$ /index.php?/$1 [L]
ErrorDocument 404 /index.htm

В конце второй строки как раз и указан файл index.htm, обращение к которому не должно приводить к переадресации запроса на index.php.

5. Превращаем плагины в хэлперы.

Сразу скажу, что я не создавал самописных плагинов, поэтому для меня данный пункт прошел просто и быстро. Я всего лишь заменил в паре мест вызов

$this->load->plugin ('captcha');

на

$this->load->helper ('captcha');

6. Далее нужно обновить расширения классов. Теперь все классы ядра CodeIgniter имеют префикс CI_. Поэтому теперь все Ваши контроллеры и модели должны расширять CI_Model и CI_Controller соответственно.

К примеру, вместо

class Crud extends Model

нужно писать:

class Crud extends CI_Model

А вместо

class Sections extends Controller

соответственно

class Sections extends CI_Controller

7. Наконец, нужно обновить вызовы конструкторов родительских классов.

До версии 2.0 вызов происходил так:

parent::Controller();

либо

parent::Model();

Поскольку CodeIgniter теперь полностью перешел на PHP5, необходимо вызывать конструктор родительского класса следующим образом:

parent::__construct();

8. Восьмым пунктом меня ждала первая неожиданность.

Хостинг

Выполнив все, что я расписал ниже, я обратился к сайту, и увидел сообщение о том, что для нормальной работы сессий мне необходимо указать в файле config.php (system - application - config.php) ключ шифрации.

Это настройка $config['encryption_key'] = "";

До этого она у меня пустовала, и все работало отлично. Я указал произвольное значение, которое мне пришло в голову, сохранил изменения и, обратившись к сайту, увидел то, что ожидал увидеть - все было как нужно. По крайней мере на первый взгляд:)

9. Но не тут-то было. Кликнув по первой попавшейся ссылке, я остался на той же самой главной странице, на которой и был. При этом url-адрес в адресной строке благополучно изменился. Я покликал по ссылкам, ведущим в разделы, материалы, попытался войти в админку - результат тот же. Адреса меняются, а страница остается прежней.

Поскольку самому копаться в этом очень не хотелось, я направился на официальный форум codeigniter и там довольно быстро нашел решение данного вопроса.

Оказалось, что для того, чтобы все заработало, нужно поменять еще одну настройку в config.php. Я изменил

$config['uri_protocol']	= "AUTO";

на

$config['uri_protocol']	= "QUERY_STRING";

После этого все заработало. Отлично, переезд успешно состоялся).

Надеюсь, данная заметка будет полезна тем, кто столкнулся с похожей задачей обновления CodeIgniter.

P.S. Есть ли альтернатива CodeIgniter? Можете решить сами, просмотрев бесплатный видеокурс по основам работы с PHP-фреймворком CakePHP. Скачайте его, чтобы получить общее представление о возможностях этого фреймворка:

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!


Смотрите также:

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

CodeIgniter: жив или мертв?

CodeIgniter: жив или мертв?

Функции обратного вызова, анонимные функции и механизм замыканий

Функции обратного вызова, анонимные функции и механизм замыканий

Применение функции к каждому элементу массива

Применение функции к каждому элементу массива

Слияние массивов. Преобразование массива в строку

Слияние массивов. Преобразование массива в строку

Деструктор и копирование объектов с помощью метода __clone()

Деструктор и копирование объектов с помощью метода __clone()

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

PHP: Удаление элементов массива

PHP: Удаление элементов массива

Ключевое слово final (завершенные классы и методы в PHP)

Ключевое слово final (завершенные классы и методы в PHP)

50 классных сервисов, программ и сайтов для веб-разработчиков

50 классных сервисов, программ и сайтов для веб-разработчиков

Наверх