Apache enregistre PHP Fatal error: Call to undefined function json_decode()
. Après quelques recherches sur Google, il semble que ce problème soit le résultat de ne pas avoir la dernière version de php. Curieusement, des php --version
sorties en cours d'exécution
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
Montrant clairement que ma php
version est supérieure à 5.1
.
Des idées sur ce qui pourrait causer cela, ou les étapes à suivre pour le découvrir?
EDIT: Le résultat d'un script faisant écho à phpversion est 5.5.1-2+debphp.org~precise
EDIT: Le résultat de phpinfo()
est égalementPHP Version 5.5.1-2+debphp.org~precise+2
De plus, dans le phpinfo()
, il répertorie le module JSON et les auteurs du module (Omar Kilani, Scott MacVicar).
disable_functions
directive ini pour voir si ellejson_decode
est dans cette listedisable_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
. Peut-être que cela aide ...json_decode
.Réponses:
Vous utilisez Ubuntu?
Réponse courte:
(ou
php7.1-json
ouphp5-json
selon la version PHP que vous utilisez)Ensuite, assurez-vous bien sûr de redémarrer Apache :
Ou si vous utilisez PHP-FPM:
(Ou
php7.1-fpm
ouphp5-fpm
)Explication
Debian a supprimé l'ancienne extension JSON à partir de PHP 5.5rc2 en raison d'un conflit de licence.
La licence JSON a une clause qui stipule:
Cela pose un problème avec la définition du logiciel libre de la Free Software Foundation qui stipule:
FSF poursuit en répertoriant spécifiquement la licence JSON comme non libre .
Oui, cela semble un peu idiot. Néanmoins Debian a supprimé l'extension JSON non conforme, et a proposé à la place une extension de remplacement fonctionnellement équivalente.
Pour être clair: PHP lui-même n'a PAS supprimé JSON, il est toujours en master . Il s'agit d'un problème de gestionnaire de distribution / package.
Rasmus le dit assez clairement :
Plus de détails
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
la source
5.5.0
va bienJSON
, ce n'est que5.5.1
ça casse.Avec Ubuntu:
la source
apt-get install php7.2-json
pour 7.2. J'ai essayé cela mais ne fonctionne toujours pas. Me donner une erreur sur l'application laravelphp RuntimeException PHP's json extension is required to use Monolog's NormalizerFormatter
Solution pour les utilisateurs de LAMP:
La source
la source
Si vous utilisez phpbrew, essayez d'installer l' extension json pour corriger l'erreur avec la fonction json_decode () non définie :
la source
Le même problème avec 7.1
apt-get install php7.1-json sudo nano /etc/php/7.1/mods-available/json.ini
la source
J'ai la même question
PHP Fatal error: Call to undefined function json_decode()
:, mais je lance php sous cygwin sous Windows. Quand je coursphp -m
, j'ai trouvé qu'aucun module json n'est installé. Je lance donc à nouveau cygwin setup.exe, vérifie le package json à partir de l'interface de configuration et le problème est résolu.la source
Le module était installé mais le lien symbolique n'était pas dans /etc/php5/cli/conf.d
la source
vous pouvez également envisager d'éviter complètement le module PHP principal.
Il est assez courant d'utiliser les outils guzzle json comme bibliothèque dans les applications PHP de nos jours. Si votre application est une application de composition, il est simple de les inclure dans une version de composition. L'outil guzzle, en tant que bibliothèque, serait un remplacement clé en main de l'outil json, si vous dites à PHP d'inclure automatiquement l'outil.
http://docs.guzzlephp.org/en/stable/search.html?q=json_encode#
http://apigen.juzna.cz/doc/guzzle/guzzle/function-GuzzleHttp.json_decode.html
la source
J'ai installé PHP dans Centos Docker, voici mon DockerFile:
L'application a renvoyé la même erreur avec json_decode et json_encode
Installez PHP Common qui a json_encode et json_decode
J'ai un autre fichier Docker qui construit le conteneur pour l'API et il a l'ordre d'installer le client php-mysql:
Si j'utilise ces images pour monter l'application, le json_encode et le json_decode fonctionnent !! Ok ..... Quelles dépendances cela a-t-il?
Oui! À l'intérieur des dépendances se trouvent les packages communs. Je l'ai installé dans mon autre conteneur et ça marche! Après, j'ai mis la directive dans DockerFile, Git commit !! Git Tag !!!! Git Push !!!! Prêt!
la source