- PVSM.RU - https://www.pvsm.ru -
Возможно некоторые из Вас обновив php до версии 5.5 на своих Linux машинах, обнаружили добрую часть своих приложений неработающими по причине фатальной ошибки похожей на эту:
PHP Fatal error: Call to undefined function json_encode()
Почему так произошло читайте в вольном переводе cтати «Has PHP JSON been removed in PHP 5.5?»,
под катом.
Крокфордский (Douglas Crockford [1]) JSON — широко используемый формат обмена данными, оказался в лицензионном конфликте с PHP в Linux дистрибутивах из за строки в лицензионном соглашении первого, которая гласит:
“The Software shall be used for Good, not Evil.”
В этом лицензия JSON не сходится с свободой номер ноль от Фонда Свободного Программного Обеспечения:
“The freedom to run the program for any purpose.”
(программу можно свободно использовать с любой целью)
Хотя это может показаться незначительным, но автор json.org «вежливо» отказывается вносить поправки в лицензию. Ответом стало удаление стандартного PHP расширение JSON в PHP 5.5rc2 в Debian, Fedora, и других дистрибутивах.
До тех пор пока менеджер пакетов вашего Linux дистрибутива не начнет предоставлять json расширение в виде пакета, json-функции могут быть недоступны. Любой код использующий эти стандартные функции приведет к ошибкам:
PHP Fatal error: Call to undefined function json_encode()
PHP Fatal error: Call to undefined function json_decode()
(прим. переводчика: в ubuntu server 13.10 PHP 5.5.3-1ubuntu2 расширение JSON идет отдельным пакетом php5-json)
JSON в PHP будет предоставлен другими расширениями в свое время и будем надеяться это будет прозрачно для конечного пользователя, но если вы не хотите ждать с обновлением и вас затронула эта проблема, вы можете установить PECL расширение JSON-C от Реми (jsonc by Remi Collet) которое использует библиотеку json-c.
Мое решение для CentOS 5.9 было в установке PECL JSON-C расширения из репозитория Реми для YUM:
yum --enablerepo=remi install php-pecl-jsonc
Для Дебиан дистрибутивов может оказаться полезным сторонний репозиторий от Ondřej (прим. переводчика: полагаю речь идет об этом [2])
Если вы установили расширение вручную, не забудьте добавить его в php.ini
Ссылки:
bugs.php.net/bug.php?id=63520 [3]
github.com/remicollet/pecl-json-c [4]
Оригинал статьи [5]
www.json.org/license.html [6]
www.gnu.org/philosophy/free-sw.html [7]
Статья датирована девятым августа и не совсем уже актуальна (для свежей убунту например, есть пакет php5-json). Я решил опубликовать этот перевод по двум причинам:
Автор: FrEEz10
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/46131
Ссылки в тексте:
[1] Douglas Crockford: http://en.wikipedia.org/wiki/Douglas_Crockford
[2] этом: https://launchpad.net/~ondrej
[3] bugs.php.net/bug.php?id=63520: https://bugs.php.net/bug.php?id=63520
[4] github.com/remicollet/pecl-json-c: https://github.com/remicollet/pecl-json-c
[5] Оригинал статьи: http://iteration99.com/2013/php-json-removed-from-php-5-5/
[6] www.json.org/license.html: http://www.json.org/license.html
[7] www.gnu.org/philosophy/free-sw.html: http://www.gnu.org/philosophy/free-sw.html
[8] Источник: http://habrahabr.ru/post/198312/
Нажмите здесь для печати.