objects - php string to json encode




PHP Fataler Fehler: Aufruf zu undefinierter Funktion json_decode() (6)

Apache PHP Fatal error: Call to undefined function json_decode() . Nach einigem googeln scheint dieses Problem das Ergebnis zu sein, nicht die neueste Version von PHP zu haben. Seltsamerweise läuft php --version --version outputs

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

Es zeigt deutlich, dass meine php Version größer als 5.1 .

Irgendwelche Ideen, was könnte dies verursachen, oder die Schritte zu ergreifen, um herauszufinden?

EDIT: Das Ergebnis eines Skripts, das phpversion widerspiegelt, ist 5.5.1-2+debphp.org~precise

EDIT: Das Ergebnis von phpinfo() ist auch PHP Version 5.5.1-2+debphp.org~precise+2

Außerdem listet es in der phpinfo() das Modul JSON und die Modulautoren auf (Omar Kilani, Scott MacVicar).


Ubuntu benutzen?

Kurze Antwort:

sudo apt-get install php7.2-json

(oder php7.1-json oder php5-json abhängig von der PHP-Version, die Sie php5-json )

Dann stellen Sie sicher, dass Sie Apache neu starten :

sudo service apache2 restart

Oder wenn Sie PHP-FPM verwenden:

sudo service php7.2-fpm restart

(Oder php7.1-fpm oder php5-fpm )

Erläuterung

Debian hat die vorherige JSON-Erweiterung ab PHP 5.5rc2 aufgrund eines Lizenzkonflikts entfernt.

Die JSON-Lizenz hat eine Klausel, die besagt:

Die Software soll für Gut, nicht für Böse verwendet werden.

Dies verursacht ein Problem mit der Free Software Foundation Definition von freier Software, die besagt:

Die Freiheit, das Programm für jeden Zweck auszuführen (Freiheit 0).

FSF fährt fort, die JSON Lizenz als nonfree spezifisch aufzulisten .

Ja, es scheint ein bisschen albern. Dennoch hat Debian die nicht-konforme JSON-Erweiterung entfernt und stattdessen eine Ersatz-Erweiterung angeboten , die funktional äquivalent ist.

Um es klar zu sagen: PHP selbst hat JSON NICHT entfernt, es ist immer noch in Master . Dies ist ein Distro / Paketmanager-Problem.

Rasmus macht es ziemlich klar :

Wir haben json nicht entfernt, und wir werden niemals eine Version von php veröffentlichen, ohne dass die json-Unterstützung eingebaut ist. Alle Änderungen in 5.5 sind auf die von Ihnen verwendete Distributionspackung zurückzuführen, auf die wir keine Kontrolle haben.

Mehr Details

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


Das Modul wurde installiert, aber der symbolische Link war nicht in /etc/php5/cli/conf.d


Ich habe die gleiche Frage: PHP Fatal error: Call to undefined function json_decode() , aber ich führe PHP unter Cygwin unter Windows. Wenn ich php -m , habe ich festgestellt, dass kein json-Modul installiert ist. Also starte ich cygwin setup.exe erneut, überprüfe das json-Paket von der Konfigurationsoberfläche und das Problem ist gelöst.


Lösung für LAMP Benutzer:

apt-get install php5-json
service apache2 restart

Source


Sie könnten auch in Betracht ziehen, das PHP-Kernmodul komplett zu vermeiden.

Es ist ziemlich üblich, die guzzle json tools als eine Bibliothek in PHP-Apps in diesen Tagen zu verwenden. Wenn es sich bei Ihrer App um eine Composer-App handelt, ist es trivial, sie als Teil eines Composer-Builds einzubeziehen. Das Verbrauchswerkzeug als eine Bibliothek wäre ein schlüsselfertiger Ersatz für das JSON-Tool, wenn Sie PHP anweisen, das Tool automatisch einzuschließen.

http://docs.guzzlephp.org/de/stable/search.html?q=json_encode#

http://apigen.juzna.cz/doc/guzzle/guzzle/function-GuzzleHttp.json_decode.html


Wenn Sie phpbrew versuchen Sie, die json- Erweiterung zu installieren, um den Fehler mit der undefinierten Funktion json_decode () zu beheben:

phpbrew ext install json






ubuntu