Apache的日志(log)记录为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.

有没有什么 idea 可能会导致这种情况,或者采取什么步骤来找出答案?

编辑:脚本 echo 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).

推荐答案

Using Ubuntu?

简短回答:

sudo apt-get install php7.2-json

(or 100 or 101 depending on the PHP version you're running)

那当然是make sure you restart Apache:

sudo service apache2 restart

或者,如果您使用的是PHP-FPM:

sudo service php7.2-fpm restart

(Or 100 or 101)

Explanation

由于许可冲突,Debian已经从PHP5.5rc2删除了以前的JSON扩展.

JSON license有一条规定:

本软件应用于善用,而不是作恶.

这会导致Free Software Foundation's definition of free software出现问题,其中说明:

出于任何目的运行程序的自由(自由0).

FSF继续上升到specifically list the JSON license as nonfree.

是的,看起来有点傻.尽管如此,Debian已经删除了不兼容的JSON扩展,而是提供了功能相当的replacement extension.

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

Rasmus makes it pretty clear:

我们没有删除json,如果没有内置json支持,我们永远不会发布php版本.5.5中的任何更改都是由于您使用的发行版包装,我们无法控制.

More 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

Php相关问答推荐

此行动未经授权.升级Laravel时

添加自定义Metabox到WooCommerce管理订单,启用HPOS

dockerized laravel服务器拒绝POST请求

启用额外的WooCommerce产品库存位置

WooCommerce购物车中仅允许一个可下载产品

将下拉 Select 的值从WooCommerce后端保存并显示到前端

如何将WooCommerce产品从一个产品复制到另一个产品S

无额外字段的Laravel同步

显示自定义 Laravel 9 公共属性的错误

如何使用 PHP 创建简化的 twig 替换?

在具有Angular 的 Laravel 应用程序中,不显示图像

Symfony:从控制器内部调用自定义命令

Laravel 添加到经过身份验证的用户的数据将应用于每个查询

使用 Laravel 和 Vue 进行图像表单验证

跟踪通过 WooCommerce 分层定价表插件进行的购买

如何在PHP中对多个脚本调用进行排队?

PHP 合并/合并多维数组

Shopware 6:无法在新的自定义插件中保存关联字段(媒体)

按前 3 列对二维数组中的行数据进行分组,然后用逗号连接每组中的其余列

如何在 WooCommerce 中显示每个自定义选项卡的内容