What has happened?
JSON, a widely popular data interchange format, has ended up in a licensing conflict with Linux distributions over a clause in its license which states:
“The Software shall be used for Good, not Evil.”
This does not agree with the Free Software Foundation’s (FSF) freedom 0:
“The freedom to run the program for any purpose.”
While it may seem trivial, the author of JSON.org “politely refuses” to amend the clause. The response from PHP has been to remove the standard PHP JSON extension as of PHP 5.5rc2.
Depending on your set up, JSON may not be available after upgrading to PHP 5.5. Ideally, your package manager will take care of everything for you and replace the PHP JSON standard extension with a replacement, JSON-C. Otherwise, any code using the removed extension will result in the following errors:
- PHP Fatal error: Call to undefined function json_encode()
- PHP Fatal error: Call to undefined function json_decode()
If you do not want to hold off upgrading to PHP 5.5, you may install the PECL JSON-C extension developed by Remi, which utilises the json-c library.
Installing the PECL JSON-C extension from Remi’s repository for YUM:
yum --enablerepo=remi install php-pecl-jsonc
If you are installing manually, be sure to disable the old PHP JSON extension in your php.ini configuration.