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-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)。
確かに、ちょっと馬鹿げているように思えます。しかし、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