2011-09-06 74 views
7

有人可以建议如何启用PHP中的json_encode函数吗?在PHP中启用json_encode

我有一个干净的Centos 5.6安装,并刚安装Virtualmin。

有谁知道接下来的步骤?

+0

你安装什么版本的PHP? – ace

+3

当你调用json_encode()函数时有什么问题?你会得到什么样的错误信息? –

回答

8

http://www.php.net/manual/en/json.requirements.php

要求

没有使用这些功能所需要的安装;他们是PHP核心的一部分。

只是PHP >= 5.2.0

编辑:看见一个comment也是这个

在RHEL5/CentOS5添加EPEL软件库(http://fedoraproject.org/wiki/EPEL)。

之后,安装简单:

sudo yum install php-pecl-json 

不知道这是否适用于你的问题,我没有一个CentOS服务器...

的Ubuntu :

sudo aptitude install php5-json 
+0

如果我运行该命令,则返回说,错误php53-与php-common的常见冲突。 – Rob

+0

正如我所说,我不知道你是否真的需要这个,这只是一个提示。请更新你的问题,更详细的信息,你有什么PHP版本(输出'php -v')和'php -r'的输出是什么echo json_encode(true);''? – Fabio

+0

对不起,我的错误 - 小学生错误。 PHP 5.1!现在全部排序。 – Rob

2

在我的情况,我碰到这个问题就来了,因为我重新编译PHP ./configure --disable-all然后分别加入我n我需要的扩展。对于json_encode()的情况,这当然包含在JSON扩展中。要启用此扩展,选项--enable-json添加到您的configure命令,即:

./configure --disable-all --enable-json ...

(其中“...”指的是事实,你可以有你可能希望启用其他扩展。)

通常,任何PHP扩展都可以通过包含选项--with-extname--enable-extname(其中“extname”是扩展名)启用。您可以通过发行./configure --help | grep extname来确定要使用这两种语法中的哪一种。当然,您需要使库可用,并且可能必须配置它所在的路径(取决于扩展名以及它是否在“默认”路径中)。

0

在CenotOS和其他* nix系统上,即使您的PHP编译为--disable-json并非所有的东西都可能丢失。第一件事当然是检查你的phpinfo();并搜索发生的json。如果你看到启用json支持那么当然你已经启用了json扩展,但是如果没有,看看你是否有/etc/php.d/json.ini列出解析的附加.ini文件。如果你这样做,那么这个文件可能看起来像这样:

;启用json扩展模块
; extension = json.so

取消注释第二行并重新启动Apache。如果Apache启动时没有错误,请再次检查您的phpinfo()并查看是否启用了您的json扩展。如果确实如此,则全部设置,如果没有设置,则可能必须找到php扩展所在的目录,并且如果您在其中看到json.so,请编辑最后一行以包含该文件的完整路径并重新启动Apache。如果您没有json.so文件与您的其他php扩展文件,您可能将不得不重新编译一个扩展(您不需要重新编译整个PHP,但您肯定可以,这一次 - enable-json),然后重试。另外,如果您没有解析额外的.ini文件,您可以尝试在主php.ini中添加此扩展,该扩展通常是/etc/php.ini。

0

对于php 7我这样做是为了安装JSON(挣扎了几个小时之后):

yum install php70u-json 
service nginx restart 
service php-fpm restart