apache error - PHP Fataler Fehler:Aufruf zu undefinierter Funktion json_decode()




array file (8)

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).


Answers

Das gleiche Problem mit 7.1

apt-get install php7.1-json sudo nano /etc/php/7.1/mods-available/json.ini

  • Fügen Sie der neuen Datei json.so hinzu
  • Fügen Sie den entsprechenden Symlink unter conf.d hinzu
  • Starten Sie den apache2-Dienst neu (falls erforderlich)

Mit Ubuntu:

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

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


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

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


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


Sie können die eingebaute PHP-Funktion json_encode () http://php.net/manual/en/function.json-encode.php

Um die Ergebnisse zu kodieren, verwenden Sie so etwas wie

<?php
$pdo = new PDO("mysql:dbname=database;host=127.0.0.1", "user", "password");
$statement = $pdo->prepare("SELECT * FROM table");
$statement->execute();
$results = $statement->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($results);




php json apache ubuntu