当前位置: 首页>>技术教程>>正文


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

最佳方案

使用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-fpmphp5-fpm)

Explanation

由于许可证冲突,Debian从PHP 5.5rc2开始删除了先前的JSON扩展。

JSON license有一个子句指出:

The Software shall be used for Good, not Evil.

这会导致Free Software Foundation’s definition of free software出现问题,该问题指出:

The freedom to run the program, for any purpose (freedom 0).

FSF继续进行specifically list the JSON license as nonfree

是的,这似乎有点愚蠢。尽管如此,Debian删除了不兼容的JSON扩展,而是提供了功能上等效的replacement extension

需要明确的是:PHP本身并没有删除JSON,它是still in master。这是发行版/程序包管理器问题。

Rasmus makes it pretty clear

We have not removed json and we will never release a version of php without json support built in. Any changes in 5.5 is due to whatever distro packaging you are using which we have no control over.

更多细节

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

次佳方案

使用Ubuntu:

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

第三种方案

LAMP用户的解决方案:

apt-get install php5-json
service apache2 restart

Source

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7802.html,未经允许,请勿转载。