Бесплатная CMS для вашего сайта Разумная альтернатива WordPress

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

27-05-2008Reading time ~ 2 min.Roadmap 12994

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

Related Posts
Comments (7) RSS
1 Wave 2008-05-28 02:19:22

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

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

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


2 JonNiBravo 2008-05-28 05:08:18

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

PS

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


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

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

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


4 Sam 2008-05-28 11:15:24

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

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

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


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

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

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

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

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


6 Sam 2008-05-28 14:56:01

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


7 Sam 2008-05-30 11:39:37

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

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

Leave a comment!