181 votes

Erreur fatale PHP: Appel à la fonction non définie 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 d' 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 mes php version est plus grand que 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 l' phpinfo() également PHP Version 5.5.1-2+debphp.org~precise+2

De plus, en phpinfo(), il affiche le module JSON et le module d'auteurs (Omar Kilani, Scott MacVicar).

366voto

jszobody Points 13108

Utiliser Ubuntu?

Réponse courte:

sudo apt-get install php5-json

Alors bien sûr, assurez-vous de redémarrer Apache:

sudo service apache2 restart

Ou si vous utilisez PHP-FPM:

sudo service php5-fpm restart

Explication

Debian a supprimé la précédente JSON extension de PHP 5.5rc2 en raison d'un conflit de licence.

Le JSON de licence a une clause qui stipule:

Le Logiciel doit être utilisé pour de Bon, pas Mal.

Cela provoque un problème avec la Fondation pour le Logiciel Libre définition de logiciel libre qui stipule:

La liberté d'exécuter le programme, pour tous les usages (liberté 0).

La FSF va 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 est toujours en maître. C'est une distro / gestionnaire de package en question.

Rasmus rend assez clair:

Nous n'avons pas retiré json et nous ne pourrons jamais sortir une version de php sans json prise en charge intégrée. Tout changement dans la 5.5 est grâce à n'importe quelle distro emballage vous êtes à l'aide de laquelle nous n'avons aucun contrôle sur.

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

13voto

David Points 423

Avec Ubuntu:

 sudo apt-get install php5-json
sudo service php5-fpm restart
 

8voto

milkovsky Points 875

Solution pour les utilisateurs de LAMP:

 apt-get install php5-json
service apache2 restart
 

La source

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X