Не так давно обновился высокопроизводительный php-фреймворк Phalcon до финальной версии 1.3 (запись в официальном блоге). При обновлении с предыдущей стабильной версии 1.2.6 я столкнулся с несколькими трудностями. Сразу оговрюсь, что нижеследующее применимо к ОС Ubuntu.
Для начала получим свежие исходники и запустим компиляцию:
1 2 3 |
$ git clone git://github.com/phalcon/cphalcon.git $ cd cphalcon/build $ sudo ./install |
Во время компиляции произошла следующая ошибка:
1 2 3 4 |
... /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 это делается так:
1 |
$ sudo apt-get install libpcre3-dev |
Затем нам необходимо влючить в php-конфиг строку согласно официальной документации. Для тестирования работоспособности создадим файл version.php следующего содержания:
1 |
<?php echo Phalcon\Version::get()."\n"; |
И запустим:
1 2 |
$ 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 очевидно:
1 |
extension=phalcon.so |
Теперь для того чтобы из командной строки заработал наш скрипт version.php, нам необходимо продублировать файл в другой папке:
1 2 3 |
$cd /etc/php5/cli/conf.d/ # создаем символическую ссылку $ln -s ../../fpm/conf.d/40-phalcon.ini 40-phalcon.ini |
Запускаем version.php снова:
1 2 |
$ php version.php 1.3.0 |
Ура! Мы успешно обновились до финальной версии 1.3 и настроили её работоспособность.
Не забудьте перезапустить php-fpm
Надеюсь этот которкий пост сэкономит Вам немного времени при обновлении. Если возникнут другие проблемы при обновлении, то пишите в комментарии.
UPD: обновление до 1.3.1 не привело к ошибкам:)