Раздел вопрос-ответ Call to undefined function json_encode()

Перешёл на версию php5.5 (PHP 5.5.3-1ubuntu2.1), в приложении ошибка, функция json_encode не существует, как так?

ErrorException [ Fatal Error ]: Call to undefined function json_encode()

 

share

1 ответ

Сразу оговорюсь, проблема решается установкой php5-json, решение в самом конце. Но, интересно, в чём же дело?

Всё дело в конфликте лицензии json extension и лицензии php5.5. JSON extension был удалён из дистрибутива php 5.5 (и некоторых других дистрибутивов), т.к. в его лицензии сказано:

“The Software shall be used for Good, not Evil.”

Что означает: json должен использоваться для благих целей, не для зла.


В то время php является свободным ПО с открытым исходным кодом, в лицензии которого сказано:

“The freedom to run the program for any purpose.”

Что означает: свободное использование php для любых целей.


Автор JSON.org “вежливо отказался” исправлять пункт "Not for evil" в лицензионном соглашении. В ответ авторы PHP удалили  PHP JSON расширение с PHP 5.5rc2.

Решением является поставить json отдельным пакетом:

sudo apt-get install php5-json

После чего остаётся рестартануть ваш PHP и пользоваться старыми добрыми функциями json_encode, json_decode.

Добавить комментарий
    как минимум 5 символов

    icon Вход в систему

    зарегистрироваться