Apache está iniciando sesión 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
salidas
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 php
versión es mayor que 5.1
.
¿Alguna idea de lo que podría causar esto, o los pasos a seguir para averiguarlo?
EDITAR: El resultado de un script que hace eco de phpversion es 5.5.1-2+debphp.org~precise
EDITAR: El resultado de phpinfo()
es tambiénPHP Version 5.5.1-2+debphp.org~precise+2
Además, en el phpinfo()
, enumera el módulo JSON y los autores del módulo (Omar Kilani, Scott MacVicar).
disable_functions
directiva ini para ver sijson_decode
está en esa listadisable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_ge\ t_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
php-services-json
. Quizás esto ayude ...json_decode
.Respuestas:
Usando Ubuntu?
Respuesta corta:
(o
php7.1-json
, ophp5-json
dependiendo de la versión de PHP que se está ejecutando)Luego, por supuesto, asegúrese de reiniciar Apache :
O si está utilizando PHP-FPM:
(O
php7.1-fpm
ophp5-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:
Esto causa un problema con la definición de Free Software Foundation de software libre que establece:
FSF continúa enumerando específicamente la licencia JSON como no libre .
Sí, parece un poco tonto. Sin embargo, Debian ha eliminado la extensión JSON no compatible y, en su lugar, ofreció una extensión de reemplazo que es funcionalmente equivalente.
Para ser claros: PHP en sí NO ha eliminado JSON, todavía está en master . Este es un problema de distribución / administrador de paquetes.
Rasmus lo deja bastante claro :
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
fuente
5.5.0
está bienJSON
, es solo5.5.1
que se rompe.Con Ubuntu:
fuente
apt-get install php7.2-json
con 7.2. Intenté esto pero aún no funciona. Dándome un error en la aplicación laravelphp RuntimeException PHP's json extension is required to use Monolog's NormalizerFormatter
Solución para usuarios de LAMP:
Fuente
fuente
Si está utilizando phpbrew, intente instalar la extensión json para corregir el error con la función indefinida json_decode () :
fuente
El mismo problema con 7.1
apt-get install php7.1-json sudo nano /etc/php/7.1/mods-available/json.ini
fuente
Tengo la misma pregunta:
PHP Fatal error: Call to undefined function json_decode()
pero ejecuto php bajo cygwin en Windows. Cuando ejecutophp -m
, descubrí que no hay un módulo json instalado. Entonces ejecuto cygwin setup.exe nuevamente, verifico el paquete json desde la interfaz de configuración y el problema está resuelto.fuente
El módulo se instaló pero el enlace simbólico no estaba en /etc/php5/cli/conf.d
fuente
También puede considerar evitar el módulo PHP central por completo.
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 aplicación de compositor, es trivial incluirlos como parte de una compilación de compositor. La herramienta guzzle, como biblioteca, sería un reemplazo llave en mano para la herramienta json, si le dice 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
fuente
Instalé PHP en Centos Docker, este es mi DockerFile:
La aplicación devolvió el mismo error con json_decode y json_encode
Instale PHP Common que tiene json_encode y json_decode
Tengo otro archivo Docker que construye el contenedor para la API y tiene el orden de instalar el cliente php-mysql:
Si uso estas imágenes para montar la aplicación, ¡json_encode y json_decode funcionan! Ok ..... ¿Qué dependencias tiene esto?
¡Si! Dentro de las dependencias se encuentran los paquetes comunes. ¡Lo instalé en mi otro contenedor y funciona! Después, puse la directiva en DockerFile, Git commit !! Git Tag !!!! Git Push !!!! ¡Listo!
fuente