CodeIgniter

Подписаться на эту рубрику по RSS

CodeIgniter 1.7.1

Рубрика: CodeIgniter
Дата: 12/02/2009 16:15:29

Недавно вышел CodeIgniter 1.7.1 и я решил перевести MaxSite CMS на неё. Как известно система работала на 1.6.1. Была попытка перехода на CodeIgniter 1.6.2, но разработчики что-то там не доглядели и в итоге пришлось вернуться на стабильную 1.6.1.

Вчера проверял и тестировал 1.7.1 и в целом проблем не нашел. Из-за не до конца проработанного механизма экранирования в SQL-запросах в некоторых функциях пришлось отключить в них экранирование. Так же были мелкие нововведения, больше связанные с синтаксисом запросов (where-условия нужно указывать через пробел).

Остался «фирменный» баг с неверным определением сегментов. Я уже писал об этом раньше.

Сразу же обновил и версию jQuery: на последнюю 1.3.1. Проблем не заметил.

Если за время тестирования не обнаружатся какие-то смертельные глюки, то MaxSite CMS 0.30 будет работать уже на CodeIgniter 1.7.1. Если после обновления у вас возникли проблемы, то напишите об этом на форуме.

Откатился на CodeIgniter 1.6.1

Рубрика: CodeIgniter
Дата: 13/06/2008 21:57:53

Что-то совсем меня достали ошибки новой версии CodeIgniter 1.6.2. Явно что-то там не в порядке. Я уже дважды писал о проблемах: вначале отказался работать XmlRpc, потом начала отваливаться база. А сейчас опять выяснилось, что если указать db->where(array('page_title'=>'')), то CodeIgniter падает с ошибкой о неверном SQL. В общем, нафиг такое счастье, пусть разработчики сами разбираются. Я же откатываю свою систему на 1.6.1, где всё замечательно работает.

Непонятные проблемы...

Рубрика: CodeIgniter | Ход работ
Дата: 28/05/2008 01:50:33

Что-то явно не так в CodeIgniter. Столкнулся с серьезной проблемой, которую так и не могу побороть. Дело в XmlRPC, хотя я думаю, что в каких-то ситуациях дело не только в этой библиотеке. Скорее всего существует ошибка при подключении разных классов в основном контролере. То есть когда я в основном контролере передаю управление во вьювер, то в этом вьювере, при условии, что должен подключиться  еще один класс (через new), начинают твориться странные вещи.

Я уже писал, что не смог перейти на 1.6.2 из-за того, что XmlRPC вдруг перестала видеть базу данных. Все попытки вручную её прописать, все равно не срабатывают - в основном контролере она есть и дальше, хоть тресни, не видно.

Сегодня столкнулся с аналогичной проблемой, только на другом хостинге. XmlRPC опять напрочь отказывается работать. И опять проблема с подключением классов. На сей раз вылезает ошибка:

  1.  Fatal error: Cannot redeclare class ci_session in /.../system/libraries/Session.php on line 0

При этом если прописать библиотеку в автозагрузку, никакого эффекта. Поэтому пришлось отключить автозагрузку  и прописать подключение библиотек вручную. При этом, что интересно, хотя в основном контролере все прописано, а в XmlRPC стоит и «parent::Controller();» и «$CI = & get_instance();» (и каких только вариантов я не перепробовал), все равно происходит какая-то ошибка и база опять отваливается.

Впрочем есть у меня предположение, что дело здесь вовсе не в CodeIgniter и моих кривых ручках, а самом хостинге. Проблема возникает на хостинге с PHP 4.4.8. На локальной машине и на другом хостинге, где стоит PHP 5.2 подобных проблем не наблюдается.

Похоже, перемудрили разработчики.  В новой версии что-то неладное творится с подключением библиотек. :-(

После перехода вдруг перестал работать Xmlrpc. Я долго бился, пока не выяснил, что в новой версии подключается лишь часть библиотек, хотя в autoload'е все стоит как положено. Собственно там всего две библиотеки: база данных и сессия. И вот в моем классе Xmlrpc_server база данных напрочь отсутствует. Как будто бы её просто нет.

Я пробовал вручную её прописывать (может проблема в автозагрузке), но библиотека не подключается, то есть на каком-то уровне CodeIgniter считает, что она уже загружена, хотя реально это не так. Впрочем может это еще какая-то ошибка, но мне её так и не удалось победить. Пробовал самые разные варианты, никаких результатов.

И главное - теперь совершенно непонятно в какую сторону копать. :(

Вышел CodeIgniter 1.6.2

Рубрика: CodeIgniter
Дата: 14/05/2008 10:42:19

Вышел CodeIgniter 1.6.2. Изменений довольно много, прежде всего хочется отметить два:

  • во всех php-файлов убран закрывающий  ?>
  • в конфигурации добавлен файл constants.php

Версию пока тестирую локально, после этого обновлю уже на сервере.

CodeIgniter и PHP как FastCGI

Рубрика: CodeIgniter
Метки:
Дата: 07/05/2008 22:04:38

Вот здесь я уже писал, об особенностях работы PHP в режиме FastCGI. Недавно обнаружил еще один глюк, который поначалу принял на счет этой «связки». Как оказалось проблема крылась именно в CodeIgniter.

Суть проблемы. У меня на сайте пагинация страниц. Поскольку главная страница имеет тип «home», то ссылки на страницы формируются в виде «сайт/home/next/2». И вот эта штука напрочь отказывалась работать - постоянно выходило сообщение, что страница не найдена (404).

Обнаружилось, что неверно работает $this->uri->segment_array() - он упорно исключал из первого сегмента URI «home». Перепробовав всевозможные варианты, полез в URI.php и выяснилась интересная деталь.

В режиме, когда $config['uri_protocol'] = "REQUEST_URI" происходит парсинг $_SERVER['REQUEST_URI'], что вполне логично. Но вот в конце этого парсинга (функция _parse_request_uri) получает реальный путь на сервере и сравнивает с полученным REQUEST_URI и берет только ту часть, которая несовпадает. Так вот, на сервере путь начинается с «home» и первый сегмент тоже начинается с «home». Вот функция и удаляет её. smile

Я не стал сильно разбираться в смысле этих манипуляций, просто закоментировал строки:

  1.  # $parsed_uri = implode("/", array_slice($parsed_uri, $i));
  2.  $parsed_uri = implode("/", $parsed_uri);

После этого все заработало.