Современная, быстрая и удобная система управления сайтом

CodeIgniter и PHP как FastCGI

Архив записейКомментарии: 7Просмотров: 17114

Вот здесь я уже писал, об особенностях работы 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);

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

Комментариев: 7 RSS

1puika10-05-2008 17:49

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

2Максим11-05-2008 20:38

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

3Wave15-05-2008 21:50

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

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

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

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

4Максим16-05-2008 10:06

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

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

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

5Вадим17-05-2008 23:06

1 июня - ура!

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

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

6Максим18-05-2008 10:13

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

7bvn31-08-2009 13:14

А я люблю ковыряться в чужом коде, если этот код мне нравится... считаю, что так можно почерпнуть много полезного. Я пока только изучаю CI, попутно и maxsite - хочу заюзать его для своего блога, но мне не хватает уверенности, что я смогу его потом под свои нужды дорабатывать... Как-то он, ИМХО, не так работает, как в документации на CI предполагется... И еще в URI.php какие-то символы типа нестандартные... не знаю, PHPeD ругается, предлагает сделать транслитерацию, а когда я жму "Cancel", то и вовсе валится... трик однако :)

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

Комментарий будет опубликован после проверки

Вы можете войти под своим логином или зарегистрироваться на сайте.

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