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

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

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

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

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

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

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 подобных проблем не наблюдается.

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

1Wave28-05-2008 02:19

Максим, а вы проверяли на php5, работает ли то, из-за чего вы на 1.6.2 не переходите?

А на code-igniter.ru/forum/ - заглядываете? Там люди, которые с разработчиком игнитера общаются.

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

2JonNiBravo28-05-2008 05:08

Макс, может хрен с ним с этим PHP4, пора его уже выбросить на помойку, ты пишешь цмс нового поколения, зачем же пользоваться инструментами прошлого века

PS

Это уже третий коммент, я не знаю дошли ле прежние 2. что? попали на предмодерацию? ты хоть как то об этом сообщи чтобы я не беспокоился.

3Максим28-05-2008 08:41

Да, я извиняюсь, работает премодерация, и никакого сообщения не выводится. Пока не решил как его добавить.

По php4 я уже думал. Только что делать с теми, у кого такой хостинг. У меня например он до сих пор на одном из серверов. :(

4Sam28-05-2008 11:15

Если удастся локализовать ошибку — будет просто замечательно.

Какие именно условия?

Нет ли попытки испольнить другой контроллер второй раз?

5Максим28-05-2008 12:37

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

Интересный момент нашел.

В Base4.php &get_instance возвращается как global $CI. Но есть условие is_object. Так вот, если просто объявить в самом классе глабально $CI (без &get_instance), то чудесным образом появляются все поля этого объекта. Путем тыка обавил еще и is_array, работает лучше. Но все равно какие-то глюки с подключением остаются. Ну и в php5 данный способ не катит (только &get_instance).

В общем, я просто вынес функции добавления/редактирования в отдельный файл и подключаю его как обычно через require_once - все замечательно работает даже на 1.6.2. Придется оставить XMLRPC до лучших времен. Скоро выложу систему, может кто-то и подскажет куда рыть.

6Sam28-05-2008 14:56

Хорошо. Но если будет время разобраться — попытайся примерно локализовать проблему, чтобы зарепортить багу. В Ellislabs разберутся…

7Sam30-05-2008 11:39

Неофициальная curl-либа:

http://alexpolski.com/2008/05/14/bugfixes-in-curl-library-for-codeigniter/

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

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

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

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