当前位置: 首页 > 知识库问答 >
问题:

PHP致命错误:调用未定义的函数json_decode()

岳玉书
2023-03-14

Apache正在记录PHP致命错误:调用未定义的函数json\u decode()。在谷歌搜索之后,这个问题似乎是由于没有最新版本的php造成的。奇怪的是,运行php--versionoutputs

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版本5.5.1-2 debphp.org~precise 2

此外,在phpinfo()中,它列出了模块JSON和模块作者(Omar Kilani,Scott MacVicar)。

共有3个答案

平俊茂
2023-03-14

灯具用户解决方案:

apt-get install php5-json
service apache2 restart

来源

宗政天逸
2023-03-14

使用Ubuntu:

sudo apt-get install php5-json
sudo service php5-fpm restart
花飞扬
2023-03-14

简短答复:

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

由于许可证冲突,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/

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

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

 类似资料:
  • 问题内容: Apache正在记录日志。经过一番谷歌搜索,似乎这个问题是由于没有最新版本的php导致的。奇怪的是,运行输出 清楚表明我的版本大于。 关于什么可能导致这种情况的任何想法,或者要采取哪些措施找出答案? 编辑:脚本回显phpversion的结果是 编辑:的结果也是 此外,在中,它列出了模块JSON和模块作者(Omar Kilani,Scott MacVicar)。 问题答案: 简短答案:

  • 问题内容: 我不断收到错误PHP致命错误:调用未定义函数mysqli_stmt_get_result()。我正在使用PHP版本5.6,并在主机提供商c面板中启用了扩展mysqlind,但我不知道为什么仍然出现此错误。我进行了研究,发现每次需要启用mysqli nd才能使用mysqli_stmt_get_result。任何人都可以协助/教导我在做什么错。谢谢。 SIGNUP.PHP: 问题答案: 您

  • 问题内容: 当我尝试将旧的sql切换到sqli时,有人可以告诉我为什么这不起作用: 至: 它一直给我一个错误:“致命错误:调用未定义函数mysqli_result()” 问题答案: 不要使用这种代码。这是非常低效的。使用来代替: 一个SINGLE数据库操作,而不是您尝试执行的3个以上操作。

  • 问题内容: 我正在尝试连接到安装了PostgreSQL的数据库(远程服务器)。我的PHP代码正在尝试使用pg_connect()连接到数据库,但出现错误消息:-“致命错误:在第82行的/var/www/website/functions.php中调用未定义的函数pg_connect()”。 82行只是: (所有先前定义的变量) 我检查了很多论坛,建议的唯一解决方案是找到包含一行的php.ini文件

  • 问题内容: 我的代码是这样的: 当我运行通过Web套接字创建连接的php文件时,出现致命错误:调用if(($ this-> master = socket_create(AF_INET,SOCK_STREAM,SOL_TCP))<0)行中的未定义函数socket_create() 因此,我无法连接Web套接字,也无法从套接字获取响应消息,因为在运行客户端页面时,浏览器中显示的是套接字状态:3(关闭

  • 问题内容: 我正在尝试建立一个捐赠中心,使用的是Totorialzine的源代码。 到目前为止,到目前为止一切都对我来说还算不错,但是我一直在苦苦挣扎并试图研究一整天的唯一问题,无法确切知道代码的实际错误所在 这是我的访客捐赠时在页面上提交评论时得到的。 这是php文件中的代码。 我的phpMyAdmin数据库已完成上传 这是我按照安装说明进行操作的地方 http://tutorialzine.c