未捕获的错误:调用未定义的函数 Composer\Console\json_decode()

Posted

技术标签:

【中文标题】未捕获的错误:调用未定义的函数 Composer\\Console\\json_decode()【英文标题】:Uncaught Error: Call to undefined function Composer\Console\json_decode()未捕获的错误:调用未定义的函数 Composer\Console\json_decode() 【发布时间】:2017-03-11 15:57:15 【问题描述】:

当我在我的机器上安装 LAMP 时,我已经安装了 php 5.6.27。几天前,我安装了 php 5.3.29 和我以前的 php 版本。之后,当我尝试在 symfony2 项目上运行 composer update 时,出现错误:

Fatal error: Uncaught Error: Call to undefined function Composer\Console\json_decode() in /usr/share/php/Composer/Console/Application.php:145
Stack trace:
#0 /usr/share/php/Symfony/Component/Console/Application.php(120): Composer\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#1 /usr/share/php/Composer/Console/Application.php(99): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#2 /usr/bin/composer(44): Composer\Console\Application->run()
#3 main
  thrown in /usr/share/php/Composer/Console/Application.php on line 145

我目前使用sudo a2enmod php5.6 命令启用了php 5.6.27。在我的浏览器上,phpinfo() 的输出显示 php 版本为“PHP 版本 5.6.27-1+deb.sury.org~xenial+1”。也启用了 php-json 模块,如下面的屏幕截图所示

在终端中php -v的输出是:

PHP 5.6.27-1+deb.sury.org~xenial+1 (cli) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

正如帖子PHP Fatal error: Call to undefined function json_decode() 的答案中所建议的那样,我尝试运行sudo apt-get install php5-json,但它输出:

sudo: unable to resolve host utkarsh
[sudo] password for lenovo: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'php5-common' instead of 'php5-json'
php5-common is already the newest version (5.3.2-1ubuntu4).
0 upgraded, 0 newly installed, 0 to remove and 50 not upgraded.

在此之后我重新启动了 apache2 服务器,但在运行 composer update 时它仍然给我同样的错误。

感谢所有帮助。

【问题讨论】:

github.com/composer/composer/issues/2092 谢谢杰,但帖子中提到的解决方案既不清楚也不适合我 【参考方案1】:

您的问题是由于 cli 未启用 php json 模块。 (php cli vs apache)

尝试 php --ini 找到您的 php ini 路径。 查看 /etc/php/5.6/mods-available 中的 json.ini。 检查/etc/php/5.6/cli/conf.d是否有指向上述文件的符号链接。 如果没有,请创建一个指向 json.ini 的符号链接,名称为 eg。 20-json.ini。

请注意,php 5.6 模块的位置可能在您的安装中有所不同。

这可能会有所帮助:

Is there any command to enable/disable a php extension from command line?

【讨论】:

以上是关于未捕获的错误:调用未定义的函数 Composer\Console\json_decode()的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的错误:调用未定义的函数 mysql_escape_string()

致命错误:未捕获错误:调用未定义函数 is_product()

致命错误:未捕获的错误:调用 C:\xampp\htdocs\ 中未定义的函数 mysql_connect()

未捕获的错误:将 laravel 5.8 升级到 8 后调用未定义的函数 Illuminate\Mail\TransportManager()

致命错误:未捕获的错误:调用 /homepages/ 中未定义的函数 mysql_pconnect() [重复]

致命错误:未捕获的错误:调用未定义的函数 mssql_query() [重复]