MaxSite CMS

Официальный сайт

CodeIgniter и PHP как FastCGI

Рубрика: CodeIgniter
Метки: решение проблем
Дата: 07/05/2008 22:04:38
Просмотров: 6
Подписаться на комментарии по 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». Вот функция и удаляет её. smile

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

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

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

Комментариев: 6

  1. 2008-05-10 в 19:49:54 | puika (анонимно)

    Привет,свою разработку будешь выкладывать в свободный доступ или как Клиент для WordPress будет платный?ФКлиент кстати я у тебя купил,но не пользуюсь,на это есть свои причины.Хотелось бы услышать ответ,кстати удачи в разработке,дело не благодарное-она тебе пригодится.Время ссесии увеличь,люди не роботы-быстро не пишут.

  2. 2008-05-11 в 22:38:11 | Максим

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

  3. 2008-05-15 в 23:50:44 | Wave (анонимно)

    MaxCMS интересна тем, кто пишет на CI. Когда фреймворку не хватает CMS над ним...

    Вобщем, а предположительно, когда плюс-минус будет выкладываться система?

    В конце-концов, те, кто сами пишут на фреймворке, вполне могут допилить недостающие им части.

    P.S. Оно мне только что сказало "ошибка сессии, обновите страницу". Мама, что это было?

  4. 2008-05-16 в 12:06:40 | Максим

    У меня в todo еще 20 пунктов. В день уходит на 1-2, больше не получается. Но я уже принял решение, что до 1 июня выложу ту версию которая будет на на тот момент. В принципе сама система работает, но некоторые мелочи нужно всё-таки доделать.

    Расчитывать на то, что кто-то придет и будет доделывать, я не хочу. Сам не люблю в чужом коде ковыряться, думаю, что у других такое же мнение.

    ps Сессия просто истекла. Время обновения сессии стоит 15 минут. По идее должно хватить для написания комментария.

  5. 2008-05-18 в 01:06:18 | Вадим (анонимно)

    1 июня - ура!

    Дело вообще-то в том, что я уже более-менее разобрался с Codeigniter и в случае чего могу писать под него плагины, но очень мало разобрался с drupal и wordpress (их кодом) - в случае чего мне или обходиться стандартными (модифицировать оные только за счёт общего владения php), или тратить время на разбирательство с API drupal\wordpress (что сделать вобщем-то планирую).

    Учитывая, что на друпале\вордпрессе с уже существующими плагинами можно решить очень большое количество задач, к тому же быстрее, чем решать их на голом фреймворке, а также учитывая тяжеловесность вордпресса и друпала и нерешаемость ими каких-то нестандартных задач - я очень рад появлению cms на codeigniter. Думаю, небольшие проекты на MaxCMS делать будет удобно. Каждой задаче свой инструмент.

  6. 2008-05-18 в 12:13:44 | Максим

    Я думаю, что у меня плагины немного проще делать. Во-первых за счет более четких тербований, именований, а во вторых - там практически чистый PHP, а следовательно ограничений системы будет минимум. По сути у меня плагин - это просто подключаемый php-файл.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)