1. ホーム
  2. php

[解決済み] PHP Fatal error: 未定義の関数 json_decode() への呼び出し

2022-04-21 13:31:30

質問

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 .

この原因について何か思い当たること、またはそれを調べるための手順があれば教えてください。

EDIT: スクリプトでphpversionをエコーした結果は 5.5.1-2+debphp.org~precise

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

さらに phpinfo() で、モジュールの JSON とモジュール作者 (Omar Kilani, Scott MacVicar) をリストアップしています。

解決方法は?

Ubuntuを使用していますか?

簡潔にお答えします。

sudo apt-get install php7.2-json

(または php7.1-json または php5-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を削除したわけではありません。 まだマスターにある . これは、ディストロ/パッケージマネージャの問題です。

Rasmusはかなり明確にしている :

私たちは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/

https://bugs.php.net/bug.php?id=63520

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