Переход на CodeIgniter 1.6.2 откладывается
Похоже, перемудрили разработчики. В новой версии что-то неладное творится с подключением библиотек. ![]()
После перехода вдруг перестал работать Xmlrpc. Я долго бился, пока не выяснил, что в новой версии подключается лишь часть библиотек, хотя в autoload'е все стоит как положено. Собственно там всего две библиотеки: база данных и сессия. И вот в моем классе Xmlrpc_server база данных напрочь отсутствует. Как будто бы её просто нет.
Я пробовал вручную её прописывать (может проблема в автозагрузке), но библиотека не подключается, то есть на каком-то уровне CodeIgniter считает, что она уже загружена, хотя реально это не так. Впрочем может это еще какая-то ошибка, но мне её так и не удалось победить. Пробовал самые разные варианты, никаких результатов.
И главное - теперь совершенно непонятно в какую сторону копать. ![]()
Вышел CodeIgniter 1.6.2
Вышел CodeIgniter 1.6.2. Изменений довольно много, прежде всего хочется отметить два:
- во всех php-файлов убран закрывающий ?>
- в конфигурации добавлен файл constants.php
Версию пока тестирую локально, после этого обновлю уже на сервере.
Визуальный редактор
Похоже, что я несколько погорячился, решив, что визуальный редактор можно оставить на потом и отладить его работу. Исходил из того, что в случае каких-то проблем, всегда можно подправить его код. Но я ошибся.
Первоначально я взял редактор FreeRTE. Всё в нем замечательно: и оформление, и настройки, но в процессе работы возникло несколько проблем. Главная из них в том, что спецсимволы, которые с лихвой присутствуют в PHP и которые я публикую, не совсем корректно обрабатываются этим редактором. Даже когда я перехожу на закладку «Код», все равно некотоыре символы неверно кодируются.
Основная проблема, как оказалось, кроется в кавычках, которыми экранируются спецсимволы. Получилась солянка: на стороне сервера я делаю правильное html-кодирование, на стороне браузера уже работает JS, со своими особенностями. Поэтому «серверные тексты» нужно отдавать редактору уже в его формате.
Ситуация значительно усложнилась из-за того, что редактор не имеет textarea-элемента. Поэтому тексты нужно передавать как одну из JS-переменных.
В общем намучавшись с кодированием туда-сюда, я решил сменить визуальный редактор.
Читать полностью »CodeIgniter и PHP как FastCGI
Метки: решение проблем
Дата: 07/05/2008 22:04:38
Подписаться на комментарии по RSS
Вот здесь я уже писал, об особенностях работы 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». Вот функция и удаляет её. ![]()
Я не стал сильно разбираться в смысле этих манипуляций, просто закоментировал строки:
# $parsed_uri = implode("/", array_slice($parsed_uri, $i));
$parsed_uri = implode("/", $parsed_uri);
После этого все заработало.
Сделал все плагины виджетными
Впрочем только те, которые действительно могут быть виджетными. ![]()
Создание виджетов оказалось совсем простым делом, не сравнится с WordPress, где это сложней.
Еще оказалось, что плагин Twitter'а отлично подходит как грабилка RSS. Для примера подключил трансляцию со своего сайта.
И главное. Немного доработал функцию рубрик, чтобы можно было указать список исключающих и включающих рубрик. Это нужно, чтобы сделать группы рубрик. Сейчас это «MaxSite CMS» и «Блог».