Настройка Yii на хостинге без поддержки PDO
Рубрика: Мелкие заметки на тему Yii
13 Апр. 2009
Была у меня мысль когда то запустить свой блог на одном интересном бесплатном хостинге. Посмотрев на конфигурацию сервера и требования Yii – я понял что блог встанет без проблем.
Набравшись терпения при закачке файлов на сервер (все мы знаем скорость работы забугровых фри хостингов) я стал ожидать. Когда все файлы были загружены, дамп базы поднят, а конфиг настроен – блог все равно не работал...
Сравнив немного конфигурацию своего локального сервера (Zend Server) и хостинга (000webhost.com) я понял что нуждаюсь в поддержке PDO. К сожалению негде в документации по Yii этого сказано не было, но без поддержки PDO – работать с базами MySQL/MsSql/PostgreSQL вы не сможете. Я написал в поддержку хостинга и получил ответ что ради меня они PDO MySQL ставить не будут.
Немного излив душу и спросив совета на форуме я начал ковырять расширение PHPPDO от Николая Ананьева и надстройку над ним от автора блога (http://oleg.in-da.ru/). Данное расширение позволяет эмулировать модуль PDO при его отсутствии на хостинге что само по себе является интересным решением. Честно сказать корректность работы с базами отличными от MySQL – я не гарантирую, но с мускулом у меня проблем не возникло.
Установка
- Скачать это самое расширение PHPPDO [зеркало]
- Распаковать архив в каталог 'protected/extensions'
- Изменить 'config/main.php':
'db'=>array(
'class'=>'application.extensions.PHPPDO.CPdoDbConnection', ... ),
Естественно как вы понимаете PHPPDO это эмулятор и он работает намного медленнее самого оригинала. Используйте данный подход только в том случае если вы сильно привязаны к хостингу и вариантов добавить родное pdo там нет.
Прямая ссылка на Extension PHPPDO - http://www.yiiframework.com/extension/phppdo/
Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
- Иногда полезно смотреть на текущюю стадию разработки нашего любимого Yii Framework-а.
next
Можно заметить что версия 1.0.10 уже ... "Yii::registerAutoloader()"
- Подсветка php кода на страницах блога — штука невероятно удобная. Давайте в двух словах разберемся как я подкрутил её у ... "Подсветка синтаксиса"
- С целью легкого интегрирование фреймворка со сторонними библиотеками, разработчики Yii не используют в коде глобальных функций. В Yii все ... "Используем функции быстрого доступа (глобальные функции в Yii)"

[guest] Константин
Было сказано: Вторник, 28 Апрель 2009
Про требование - PDO есть упоминание буквально везде :) Начиная от доков, заканчивая страничкой проверки конфигурации сервера (которая идет в скачанном yii)
Но эмуляция ПДО - это супер, молодец что нашел решение! Может как-нибудь пригодится.

[guest] Юрий
Было сказано: Среда, 10 Июнь 2009
Здравствуйте,
имею проблему при пользовании Active Record: на хостинге включён PDO, однако отсутствует драйвер pdo_MySQL. прописка в конфиге 'class'=>'application.extensions.PHPPDO.CPdoDbConnection' и установка в 'extensions' PHPPDO не помогает - идет ошибка «CDbConnection failed to open the DB connection: could not find driver»
phpinfo - http://yy73.byethost7.com/
requirements - http://yy73.byethost7.com/yii/requirements/
config - http://yy73.byethost7.com/bbb/main.php.txt
что делать? переписывать getDbConnection() ? если да, то как ?

[adm] zolter
Было сказано: Среда, 10 Июнь 2009
А нет возможности программно отключить поддержку pdo на хостинге? Я знаю что у некоторых людей возникали конфликты и phppdo просто не схватывал управление драйвером по умолчанию.

[adm] zolter
Было сказано: Среда, 10 Июнь 2009
Я бы посоветовал вам обратиться на сайт разработчика расширения (http://oleg.in-da.ru/projects/yii/rasshirenie_phppdo) но судя по коментам вы ему уже писали.

[guest] Гость
Было сказано: Среда, 15 Июль 2009
Не совсем в тему, но на счет долгой закачки файлов.. пользуйтесь скриптами ))
// архивируем
system("tar -czf file.tgz * ");
// распакуем
system("tar -xzf file.tgz");
а по ftp гоняем только архивы )))

[guest] Гость
Было сказано: Четверг, 26 Ноябрь 2009
а как можно программно отключить pdo на хостинге? Нашел шикарный бесплатный хостинг, там включено PDO,SQLite PDO, а для MySQL-нет(
написал им, жду чего ответят..

[adm] zolter
Было сказано: Четверг, 26 Ноябрь 2009
Чтобы включить PDO MySQL это самому хостеру надо пересобрать php на сервере. Сами вы не как это не сделаете.
Как вариант - эмулировать pdo с помощью приёма, описанного в этой статье. Но в этом случае скорость работы сайта немного упадет.

[guest] Гость
Было сказано: Четверг, 26 Ноябрь 2009
Это-то я понял..я не про это)
Было сказано: Среда, 10 Июнь 2009
А нет возможности программно отключить поддержку pdo на хостинге?
а вот про это..

[adm] zolter
Было сказано: Четверг, 26 Ноябрь 2009
Именно отключить? Только пересобрав php с соответствующей опцией. Т.е. вы как владелец аккаунта вирт.сервера такого сделать не сможете. А чем вам мешает pdo? :)

[guest] Гость
Было сказано: Четверг, 26 Ноябрь 2009
по идее, ситуация как у Юрия несколькими комментариями выше..

[adm] zolter
Было сказано: Четверг, 26 Ноябрь 2009
Почитайте комментарии на странице http://oleg.in-da.ru/projects/yii/rasshirenie_phppdo , может поможет.

Balian
Было сказано: Четверг, 26 Ноябрь 2009
Спасибо, там вроде действительно удалось решить проблему
Но я уже нашел беслптный хостинг с PDO =)

[guest] Yrii
Было сказано: Воскресенье, 29 Ноябрь 2009
Всё подключено по инструкции, но всеровно выдаём ошибку: YiiBase::include(PHPPDO.php) [<a href='function.YiiBase-include'>function.YiiBase-include</a>]: failed to open stream: No such file or directory
Файл PHPPDO.php находится в том же каталоге, что и CPdoDbConnection.php. не подскажите че делать?

[guest] ZooM
Было сказано: Среда, 09 Декабрь 2009
Но, и в итоге заработал фремворк на этом free-хостинге? =)


