uncaught - Error grave de PHP: llamada a la función no definida json_decode()
php 7 json install (8)
¿Usando Ubuntu?
Respuesta corta:
sudo apt-get install php7.2-json
(o php7.1-json
o php5-json
según la versión de PHP que esté ejecutando)
Luego, por supuesto, asegúrate de reiniciar Apache :
sudo service apache2 restart
O si está utilizando PHP-FPM:
sudo service php7.2-fpm restart
(O php7.1-fpm
o php5-fpm
)
Explicación
Debian ha eliminado la extensión JSON anterior a partir de PHP 5.5rc2 debido a un conflicto de licencia.
La licencia JSON tiene una cláusula que establece:
El software se usará para bien, no para mal.
Esto causa un problema con la definición de software libre de Free Software Foundation que establece:
La libertad de ejecutar el programa, para cualquier propósito (libertad 0).
FSF pasa a enumerar específicamente la licencia JSON como no libre .
Sí, parece un poco tonto. Sin embargo, Debian eliminó la extensión JSON no conforme y, en su lugar, ofreció una extensión de reemplazo que es funcionalmente equivalente.
Para que quede claro: PHP en sí mismo NO ha eliminado JSON, todavía está en el maestro . Este es un problema de distribución / administrador de paquete.
Rasmus lo deja bastante claro :
No hemos eliminado json y nunca lanzaremos una versión de php sin soporte json integrado. Cualquier cambio en 5.5 se debe a cualquier paquete de distribución que esté usando y sobre el que no tengamos control.
Más detalles
http://iteration99.com/2013/php-json-licensing-and-php-5-5/
http://liorkaplan.wordpress.com/2013/06/01/bye-bye-non-free-php-json-extension/
https://bugs.php.net/bug.php?id=63520
http://philsturgeon.co.uk/blog/2013/08/fud-cracker-php-55-never-lost-json-support
Apache está registrando PHP Fatal error: Call to undefined function json_decode()
. Después de buscar en Google, parece que este problema es el resultado de no tener la última versión de php. Curiosamente, ejecutando php --version
ouputs
PHP 5.5.1-2+debphp.org~precise+2 (cli) (built: Aug 6 2013 10:49:43)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
with Zend OPcache v7.0.2-dev, Copyright (c) 1999-2013, by Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Mostrando claramente que mi versión de php
es mayor que 5.1
.
¿Alguna idea sobre qué podría causar esto o qué pasos tomar para averiguarlo?
EDITAR: El resultado de una secuencia de comandos que hace eco de phpversion es 5.5.1-2+debphp.org~precise
EDITAR: El resultado de phpinfo()
también es PHP Version 5.5.1-2+debphp.org~precise+2
Además, en phpinfo()
, enumera el módulo JSON y los autores del módulo (Omar Kilani, Scott MacVicar).
Con Ubuntu:
sudo apt-get install php5-json
sudo service php5-fpm restart
El módulo fue instalado pero el enlace simbólico no estaba en /etc/php5/cli/conf.d
El mismo problema con 7.1
apt-get install php7.1-json sudo nano /etc/php/7.1/mods-available/json.ini
- Añada json.so al nuevo archivo
- Agregue el enlace sym apropiado debajo de conf.d
- Reinicie el servicio apache2 (si es necesario)
Si está utilizando phpbrew intente instalar la extensión json para corregir el error con la función indefinida json_decode () :
phpbrew ext install json
Tengo la misma pregunta: PHP Fatal error: Call to undefined function json_decode()
, pero ejecuto php bajo cygwin en Windows. Cuando ejecuto php -m
, descubrí que no hay ningún módulo json instalado. Así que vuelvo a ejecutar cygwin setup.exe, verifico el paquete json desde la interfaz de configuración y el problema está resuelto.
también podría considerar evitar por completo el módulo PHP central.
Es bastante común usar las herramientas guzzle json como una biblioteca en aplicaciones PHP en estos días. Si su aplicación es una de compositor, es trivial incluirla como parte de la compilación del compositor. La herramienta de guzzle, como una biblioteca, sería un reemplazo llave en mano para la herramienta json, si le dices a PHP que incluya automáticamente la herramienta.
http://docs.guzzlephp.org/en/stable/search.html?q=json_encode#
http://apigen.juzna.cz/doc/guzzle/guzzle/function-GuzzleHttp.json_decode.html