PHP 致命的エラー: 未定義の関数 json_decode() を呼び出しました 質問する

PHP 致命的エラー: 未定義の関数 json_decode() を呼び出しました 質問する

Apacheはログに記録していますPHP Fatal error: Call to undefined function json_decode()。グーグルで調べたところ、この問題はphpの最新バージョンがないことが原因のようです。奇妙なことに、実行php --version出力

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

私のphpバージョンが より大きいことを明確に示しています5.1

この原因は何なのか、または原因を突き止めるためにどのような手順を踏めばよいのか、何かアイデアはありますか?

編集: phpversionをエコーするスクリプトの結果は次のとおりです5.5.1-2+debphp.org~precise

編集:の結果はphpinfo()またPHP Version 5.5.1-2+debphp.org~precise+2

さらに、には、phpinfo()モジュール JSON とモジュールの作成者 (Omar Kilani、Scott MacVicar) がリストされています。

ベストアンサー1

Ubuntu をお使いですか?

短い答え:

sudo apt-get install php7.2-json

(またはphp7.1-jsonphp5-json実行している PHP のバージョンによって異なります)

そしてもちろんApacheを再起動してください:

sudo service apache2 restart

または、PHP-FPM を使用している場合:

sudo service php7.2-fpm restart

(またはphp7.1-fpmまたはphp5-fpm

説明

Debian は、ライセンスの競合のため、PHP 5.5rc2 以降で以前の JSON 拡張機能を削除しました。

JSONライセンス次のような条項があります。

ソフトウェアは悪のためにではなく善のために使用する必要があります。

これにより、フリーソフトウェア財団によるフリーソフトウェアの定義どの州:

いかなる目的でもプログラムを実行する自由 (自由 0)。

FSFはJSONライセンスを非フリーとして明記する

確かに、ちょっと馬鹿げているように思えます。しかし、Debianは非準拠のJSON拡張を削除し、代わりに代替拡張機能機能的には同等です。

明確に言うと、PHP自体はJSONを削除したわけではなく、まだマスター中これはディストリビューション/パッケージ マネージャーの問題です。

ラスムスはそれをかなり明確にしている:

私たちは json を削除しておらず、json サポートが組み込まれていないバージョンの PHP をリリースすることはありません。5.5 での変更は、使用しているディストリビューション パッケージによるものであり、私たちはそれを制御できません。

詳細情報

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/

参考:

http://philsturgeon.co.uk/blog/2013/08/fud-cracker-php-55-never-lost-json-support

おすすめ記事