我迁移到了新服务器,现在收到此错误:
Fatal error: Call to undefined function json_encode() in /home/weddings/public_html/includes/common.inc on line 5105
PS php5-json 安装不能解决问题。
答案1
我不能也不应该将其标记为重复,因为它是在另一个 stackexchange 网站上询问的,但是这这个问题可能会回答您遇到的问题。如果将来删除了该问题,以下是它的内容。请注意,此后写的所有内容都不是我的作品,而是@MirroredFate的作品。
简短回答:
sudo apt-get install php5-json
那么当然确保重新启动 Apache:
sudo service apache2 restart
或者如果你使用 PHP-FPM:
sudo service php5-fpm restart
解释
由于许可证冲突,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