Обновляемся до Phalcon 1.3

Не так давно обновился высокопроизводительный php-фреймворк Phalcon до финальной версии 1.3 (запись в официальном блоге). При обновлении с предыдущей стабильной версии 1.2.6 я столкнулся с несколькими трудностями. Сразу оговрюсь, что нижеследующее применимо к ОС Ubuntu.

Для начала получим свежие исходники и запустим компиляцию:

$ git clone git://github.com/phalcon/cphalcon.git
$ cd cphalcon/build
$ sudo ./install

Во время компиляции произошла следующая ошибка:

...
/usr/include/php5/ext/pcre/php_pcre.h:29:18: fatal error: pcre.h: No such file or directory
compilation terminated.
make: *** [phalcon.lo] Error 1

Исправляется это установкой libpcre3-dev. В ubuntu это делается так:

$ sudo apt-get install libpcre3-dev

Затем нам необходимо влючить в php-конфиг строку согласно официальной документации. Для тестирования работоспособности создадим файл version.php следующего содержания:

<?php echo Phalcon\Version::get()."\n";

И запустим:

$ php version.php
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/phalcon.so' - /usr/lib/php5/20121212/phalcon.so: undefined symbol: php_pdo_get_dbh_ce in Unknown on line 0

И видем ошибку. Теперь нам необходимо загружать PDO раньше чем Phalcon. Я ипользую php-fpm, поэтому идем в папку /etc/php5/fpm/conf.d/ и создаем файл 40-phalcon.ini. Почему 40? Важно чтобы эта цифра была больше той что стоит перед остальными файлами — у меня максимальная 20, поэтому на всякий случай сделаем её на два десятка побольше остальных. Эти цифры в начале файлов конфигурации играют роль «весов» для определения порядка загрузки конфигурационных файлов.

Не забудьте удалить строку «extension=phalcon.so» из основного конфигурационно файла php.ini

Содержимое файла 40-phalcon.ini очевидно:

extension=phalcon.so

Теперь для того чтобы из командной строки заработал наш скрипт version.php, нам необходимо продублировать файл в другой папке:

$cd /etc/php5/cli/conf.d/
# создаем символическую ссылку
$ln -s ../../fpm/conf.d/40-phalcon.ini 40-phalcon.ini

Запускаем version.php снова:

$ php version.php 
1.3.0

Ура! Мы успешно обновились до финальной версии 1.3 и настроили её работоспособность.

Не забудьте перезапустить php-fpm

Надеюсь этот которкий пост сэкономит Вам немного времени при обновлении. Если возникнут другие проблемы при обновлении, то пишите в комментарии.

UPD: обновление до 1.3.1 не привело к ошибкам:)