Проблема доступа к MySQL из ZendFramework может поставить новичка втупик, так как сообщения об ошибках и отсутствия каких-то тамдрайверов, далеко не так понятны, если ты еще не успел толком вникнутьв используемые Zend'ом технологии и принципы.
Благо PHP языкполностью документированный и найти ответы не так уж сложно. И несмотря на то, что на первый взгляд, хватило бы просто описания решения,я предпочел бы рассказать, как подобного рода проблемы решитьсамостоятельно, то есть от момента прочтения сообщения об ошибке, дополностью рабочего кода.
Итка, поехали...
Инструментарий:
- ZendFramework-1.5.3 (последняя на момент написания поста stable версия)
- PHP Version 5.2.6
- Сервер: StpServer 1.0
- MySQL 5.0.51b
Посленаписания некторого кода или копипаста кода туториала с использованиемБД, при попытке зайти на страницу где некие данные из базы выводятся вбраузер, я получаю ошибку вида:
Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' withmessage 'The mysql driver is not currently installed' inT:\home\virtual\zend\library\Zend\Db\Adapter\Pdo\Abstract.php:103 Stacktrace: #0T:\home\virtual\zend\library\Zend\Db\Adapter\Abstract.php(389):Zend_Db_Adapter_Pdo_Abstract->_connect() #1 .......
Первое что приходит в голову посмотреть страницу phpinfo() в поисках возможных причин проблемы, что мы и делаем...
Тамв разделе PDO, обнаруживается, что единственный из установленныхдрайверов PDO, это sqlite2. В нашем же случае, мы хотим использоватьMySQL.
Note: PDO (PHP Data Objects) - расширение для языка PHP, позволяющееразработчику иметь простой и удобный интерфейс для доступа к базамданных из PHP скриптов.
PDO предоставляет абстрактный доступ кбазам данных, это означает, что не важно какую СУБД вы используете, влюбом случае вы используете стандартные методы PDO для получения данныхи для их записи в базу.
PDO входит в PHP версии 5.1, и доступнокак расширение из PECL для PHP 5.0; PDO использует новые OO функцииядра PHP 5 и не работает с PHP более ранних версий.
Материал из Википедии свободной энциклопедии
Отлично, теперь нам известно о том, что такое PDO и чего собственно нехватает. Но возникает закономерное возмущение в адрес сборки сервера.
Однако как сообщает официальный сайт PHP, проблема не в дистрибутиве STP:
If you're running a PHP 5.1 release, PDO and PDO_SQLITE is included inthe distribution; it will be automatically enabled when you runconfigure.
Остается найти драйвер для mysql.
Как сообщает тот же официальный сайт, файлики должны называться так:
extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_informix.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
Поскольку ранее мы узнали, что PDB и его драйвера написаны на С врамках PECL, нам остается зайти на официальный сайт этого сообщества.Далеко ходить на придется, добавим к адресу сайта PHP всего лишьприставку pecl.
На http://pecl.php.net/ забиваем ключевое слово PDO в поиск раздела Packages.
Врезультатах поиска выбираем самый релевантный пункт и оказываемся нанужной нам странице. Теперь кликаем в таблице версий на номерокпоследнего стабильного релиза и на открывшейся странице отыскиваемссылку PDO_MYSQL. Очевидно мы на верном пути.
Однако, не стоитспешить и жать на линк [ Download Latest ], он конечно даст нам скачатьпоследний релиз библиотеки, но ... в исходниках. Да-да, вот так хитроустроены страницы PECL.
Что бы добраться до бинарников подWindows нам придется еще раз кликнуть по по первому пункту в таблицеверсий Available Releases, на этот раз 1.0.2
Вот тут-то в описании пакета Package Information, мы и находим заветную ссылку:
Windows binaries can be found at http://pecl4win.php.net/ext.php/php_pdo_mysql.dll
Она то нам и нужна!
Послезагрузки маленького файлика дело, как говориться, в шляпе. Остаетсяскопировать его в папку PECL нашего PHP. В моем случае этоT:\usr\local\Php\PECL\
Последний штрих - прописать дополнение вphp.ini в разделе расширений. что бы найти нужное место советуюиспользовать поиск со словом pdo.
В итоге получится такая строка, среди прочих расширений:
;extension=php_msql.dll
Недавно столкнулся с одной простойбытовой задачкой и как следствиепоявилась одна идея.
Не знаю нова лиона, оригинальна ли, но все таки неполенился и решил поделиться ней считателями моего блога.
А назвалэту вещь я незамысловато, но на западныйманер: "Geek tag"
"Госпожа Никсон и я разделяем горе миллионов американцев в связи со смертью Луи Армстронга. Он был одним из творцов американского искусства. Человек яркой индивидуальности, Армстронг завоевал всемирную известность. Его блестящий талант и благородство обогатили нашу духовную жизнь, сделали ее более насыщенной."
Сглаживание - технология, использующаяся в обработке изображений с целью делать границы кривых линий более гладкими, убирая "зубцы", возникающие на краях объектов. Сглаживание было придумано в 1972 в Массачусетском технологическом институте в Architecture Machine Group, которая позже стала основной частью Media Lab. (Wikipedia)
Однако слово код можно понимать и в буквальном значении. Например, серьга в правом ухе мужчины может указывать на его сексуальную ориентацию. Кроме того, например, значки на сумках эмо-кидов и прочее тоже могут рассказать многое о своем владельце.
Дресс-код (англ. dress-code) форма одежды, требуемая при посещении определенных мероприятий, организаций, заведений.
Термин [дресс-код] возник в Великобритании, но быстро распространился по всему миру. Чаще всего его используют для обозначения правил ношения одежды в офисе. Но понятие дресс-код шире и может обозначать правила ношения одежды в зависимости от социального класса человека, достатка, рода занятий, национальности, религии, семейного положения и даже сексуальной ориентации.
( http://ru.wikipedia.org/wiki/%D0%94%D1%80%D0%B5%D1%81%D1%81-%D0%BA%D0%BE%D0%B4 )