PHP Fatal error: Call to undefined fonction json_decode()
Apache est journalisation PHP Fatal error: Call to undefined function json_decode()
. Après quelques recherches sur google, il semble que ce problème est une conséquence de ne pas avoir la dernière version de php. Curieusement, l'exécution de 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
Montrant clairement que mon php
version est supérieure à 5.1
.
Aucune idée de ce que pourrait en être la cause, ou les mesures à prendre pour le savoir?
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 également PHP Version 5.5.1-2+debphp.org~precise+2
En outre, dans le phpinfo()
, il affiche le module JSON et le module d'auteurs (Omar Kilani, Scott MacVicar).
- De vérifier la
disable_functions
directive ini pour voir sijson_decode
est dans cette liste - Le module json dans votre phpinfo() de sortie?
disable_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,
- Ubuntu 12.04 a un paquet:
php-services-json
. Peut-être que cela aide... - C'est le paquet PEAR Services_Json. Ce qui est aussi assez large, la traite un peu de Javascript, et pas seulement JSON même. Mais il y a d'autres userland implémentations directement de réimplanter
json_decode
.
Vous devez vous connecter pour publier un commentaire.
Utiliser Ubuntu?
Réponse courte:
(ou
php7.1-json
ouphp5-json
en fonction de la version de PHP que vous êtes en cours d'exécution)Puis, bien sûr, assurez-vous de redémarrer Apache:
Ou si vous utilisez PHP-FPM:
(Ou
php7.1-fpm
ouphp5-fpm
)Explication
Debian a supprimé la précédente JSON extension de PHP 5.5rc2 en raison d'un conflit de licence.
La JSON licence a une clause qui stipule:
Cela provoque un problème avec Fondation pour le Logiciel libre définition du logiciel libre qui stipule:
FSF va sur spécifiquement sur la liste du JSON licence non libre.
Oui, il semble un peu ridicule. Néanmoins Debian a supprimé la non-conforme JSON extension, et à la place offert un remplacement de l'extension qui est fonctionnellement équivalent.
Pour être clair: PHP lui-même n'a PAS supprimé JSON, il toujours en maître. C'est une distro /gestionnaire de package en question.
Rasmus rend assez clair:
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
5.5.0
est bien avecJSON
, c'est seulement5.5.1
que les pauses.pkg install php56-json
Avec Ubuntu :
apt-get install php7.2-json
pour 7.2. J'ai essayé ceci mais ça ne marche toujours pas. De me donner l'erreur sur laravel applicationphp RuntimeException PHP's json extension is required to use Monolog's NormalizerFormatter
Solution pour LAMPE utilisateurs:
Source
Le module a installer, mais le lien symbolique n'était pas dans /etc/php5/cli/conf.d
Le même problème avec 7.1
apt-get install php7.1-json
sudo nano /etc/php/7.1/mods-available/json.ini
Si vous utilisez phpbrew essayez d'installer json extension pour corriger l'erreur avec pas défini la fonction json_decode():
J'ai la même question:
PHP Fatal error: Call to undefined function json_decode()
, mais je exécuter php sous cygwin sous Windows. Quand je lancephp -m
, j'ai trouvé qu'il n'y a pas de json module est installé. J'ai donc utiliser cygwin setup.exe encore une fois, vérifiez json package à partir de l'interface de configuration, et le problème est résolu.vous pourriez aussi envisager d'éviter le core module PHP complètement.
Il est assez courant d'utiliser le gave json outils comme une librairie en PHP applications de ces jours. Si votre application est un compositeur application, il est trivial de les inclure comme partie d'un compositeur de construire.
Le gave outil, comme une bibliothèque, serait un clé en main de remplacement pour le json de l'outil, si vous dites à PHP pour autoinclude 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
J'ai installé PHP dans Centos Docker, c'est mon DockerFile:
L'application retourné la même erreur avec la fonction json_decode et json_encode
Installer PHP Commune qui a json_encode et json_decode
J'ai une autre Docker Fichier que créer le conteneur de l'API et il a l'ordre d'installer php-mysql client:
Si j'utilise ces images pour monter l'app, le json_encode et json_decode fonctionne!!
Ok..... Quelles sont les dépendances de ceci?
Oui! À l'intérieur de la dépendance est la commune de paquets. Je l'ai Installé dans mon autre récipient et ça marche!!! Après, j'ai mis de la directive en DockerFile, Git commit!! Git Tag!!!! Git Push!!!! Prêt!