суббота, 4 декабря 2010 г.

Обновлена документация для PHP на сайте gentoo.org

Как сообщает Ole Markus в своем блоге, обновилась документация для пакета dev-lang/php

С выходом версии 5.3 и его поддержкой в генту добавилось много изменений, незнание которых может вызвать ряд проблем при устновке php на gentoo. В частности, теперь возможна установка в генту нескольких версий php одновременно в так называемых "слотах", используя вспомогательный пакет app-admin/eselect-php

Как это сделать, теперь более внятно разъясняется в php-guide на сайте генту в секции Slotting используя специальную переменную PHP_TARGETS. И тем не менее полностью не удается избежать проблем. В частности, это касается пакета phpunit например. Утилита /usr/bin/phpunit содержит некорректный путь к интерпретатору php. Фрагмент "неправильного" кода из /usr/bin/phpunit :


#!/usr/lib/php5/bin/php


Воспользовавшись командой whereis php мы получаем следущий код:


whereis php
php: /usr/bin/php /etc/php /usr/lib/php5.3 /usr/share/php


соответственно, путь должен быть таким

#!/usr/lib/php5.3/bin/php
...



Возможно, переустановка пакета phpunit будет содержать правильный путь в /usr/bin/phpunit
Не пробовал. Использую собственную сборку phpunit в виде исполняемого phar-архива.

Кроме того, в документации упоминается о SAPI, поддерживаемых через USE-флаги.
Это флаги: cgi, cli, apache2, fpm (PHP FastCgi Process Manager), embed (встроенный embedded PHP client) Наиболее интересные флаги конечно это fpm и embed. Теретически Embed-флаг позволяет "встраивать" php в другие языки, например python, C

Затронута так-же в двух словах о переустановке pecl-расширений при слоттинге php-версий

Ссылки:
  • Документация по апгрейду PHP


  • Блог Ole Markus


  • Ссылка на статью об обновлении документации PHP
  • воскресенье, 31 октября 2010 г.

    Поведение php-5.3.3 и sqlite, sqlite2, sqlite3, pdo в gentoo

    Есть статья посвященная этой теме. Смысл в том, что надо использовать USE-флаг sqlite3 для предотвращения возможных проблем со старыми драйверами pdo-sqlite. Новый PDO работает теперь только с sqlite3.

    Просто сделайте USE="-sqlite sqlite3" emerge -v php. После, чтобы увидеть эффект этого, просто выполните emerge --depclean -av и увидите, что sqlite2 будет выкинут из системы. Если вы установите php без корректировки USE-флагов sqlite sqlite3, то получите обе работающих библиотеки. В дальнейшем такая конфигурация будет сопровождаться генерацией нотиса в php при работе приложения.

    На мой взгляд имеет смысл отказаться заблаговременно от использования старых версий sqlite. И по возможности использовать только sqlite3. Но реально воспользоваться этой возможностью можно только перейдя на php53.

    Новый sqlite3 поддерживает юникод (UTF-8), что отражается на корректной сортировке данных. Версии sqlite ниже <3 br="">
    В общем для решения этих проблем просто установите генту с последними версиями sqlite и пхп...

    ;)

    ключевые слова:
    драйвер, сортировка, юникод, установка, генту, sql, sqlite, sqlite3, data, php, php53, php5.3, portage, gentoo, ebuild, emerge, pdo, unicode, utf

    upd 2013:
    warning: this article actual for old gentoo versions - latest builds may work not such

    внимание: данная статья актуальна для очень старых сборок - последние версии gentoo могут иметь другое поведение с этими флагами. Наблюдалось не очень логичное поведение portage - пришлось несколько раз пересобирать, возможно это просто мешали старые флаги или не поддерживаемые пакеты. 

    upd 2013:
    warning for advertisers: if you want place backlink here or something other please contact me or/and use donate button.

    dev-lang/php-5.3.3-r1 наконец-то стал стабильным для всех веток arch!

    Об этом замечательном событии сообщает Ole Markus в своем блоге. Этот пакет в gentoo теперь поддерживает многие фичи в стабильной ветке: FPM (FastCGI Process Manager) и другие .

    А другие фичи это в основном особенности новшеств языка давно известные (LSB (Late Static Binding), Closures, Тернарный оператор с "умолчательным" значением). Например фрагмент кода:

    return 'gentoo is cool' ?: 'who wants to read this, anyway?';
    вернет "gentoo is cool", потому-что ненулевая длина строки 'gentoo is cool' вычисляется как true с точке зрения приведения к boolean-значению.

    Новые и удобные функции работы с датами (date_add(), date_diff() and date_sub()) и многое другое.
    Конечно-же эти фичи просто возможности языка,а не возможности сборки пакетов, но то что позволяет делать генту при сборке пакетов было бы не возможно без системы portage и ebuilds для php.

    Есть конечно же и моменты обратной несовместимости языка список наиболее существенных из них находится тут, но это скорее всего более позитивно т.к. избавляет от ненужного хлама и неэффективного поведения.

    В блоге Маркуса также есть интересные статьи решающие различные задачи установки для PHP и PHP53. В частности приводится техника установки нескольких различных версий PHP на один сервер. Новая концепция установки pecl-расширений через слоты

    Спасибо всем тестерам и командам arch-веток, кто сделал это возможным, пишет Ole Markus.

    среда, 16 июня 2010 г.

    Подборка пакетов для PHP 5.3

    • Экспериментальное расширение для загрузки классов PHP53 с бенчмарками:
      SplClassLoader php extension benchmarks Исходный текст пакета тут Автор утверждает, что все работает очень быстро, но небольшие тормоза есть при использовании имен файлов без путей. Хотя разница незначительная.

    • Экспериментальный скрипт "полуавтоматической" миграции с php5 на php53. Ссылка В общем скрипт "помогает/облегчает" процесс адаптации кода для работы в среде php53, пытается выявить узкие места.

    • Одна из реализаций библиотек для работы с CouchDB с использованием php53. По всем признакам это пока пробный шар. Автор недавно перебрался на 5.3 и пока используются только базовые возможности. Пространства имен не используются, но радует, что народ начинает подтягиваться ;) Да и сама CouchDB очень прикольная вещь. На мой взгляд весь интерфейс для работы с диваном можно сделать через curl...

    понедельник, 31 мая 2010 г.

    Установка нового php-5.3.2.ebuild из оффициального дерева портов Gentoo

    ВНИМАНИЕ! ВНИМАНИЕ! ВНИМАНИЕ!

    статья устарела и может быть полезна только в познавательных целях или для очень давно не обновляемых серверов с генту.

    Сейчас 53 достаточно стабилен и установка достаточно тривиальна.

    Смотрите руководства по установке/обновлению php на сайте gentoo.org

    Статьи на сайтах gentoo-wiki также выглядят устаревшими. Лично мое мнение: надо использовать в полный рост PHP 5.4 и готовиться к PHP 5.5+

    ===============================================


    Установка и остальные тесты моих приложений прошли без каких-либо приключений, за исключением переустановки pecl-расширений и размаскировки dev-php5/pecl-syck

    В стабильной ветке данного ebuild требуется USE = spl, а для >=5.3.2 он не нужен. Соответственно в masked dev-php5/pecl-syck стоит проверка версии php.

    В общем все работает :)

    WARNING!!!
    Данный ebuild пока p.masked и для его установки Вам необходимо в /usr/portage/package.mask закомментировать строчку содержащую =dev-lang/php-5.3* Ожидается, что статус пакета предположительно сменится через пару недель с момента публикации.

    суббота, 29 мая 2010 г.

    PHP 5.3 в дереве портов Gentoo!

    Вчера, появилась тестовая ветка dev-lang/php в официальном дереве портов.

    Пока пакет /dev-lang/php/php-5.3.2.ebuild замаскирован, но прогресс на лице :) Спасибо разработчикам.

    Gentoo PHP team просит протестировать новый ebuild и внести посильную помощь, а также предупреждает о некоторых возможных проблемах с поддержкой mysql и других багах. Надеюсь, разверывание нового ebuild-а пройдет гладко ;) Ожидаю некоторые проблеms с PEAR, PECL, но они решаемы...

    Всех, кто интересуется данной темой - мои поздравления!