【发布时间】:2011-11-11 04:53:02
【问题描述】:
有人可以建议如何在 PHP 中启用 json_encode 函数吗?
我已经全新安装了 Centos 5.6,并且刚刚安装了 Virtualmin。
有人知道接下来要采取的步骤吗?
【问题讨论】:
-
你安装的是什么版本的PHP?
-
调用json_encode()函数有什么问题?您收到什么样的错误消息?
有人可以建议如何在 PHP 中启用 json_encode 函数吗?
我已经全新安装了 Centos 5.6,并且刚刚安装了 Virtualmin。
有人知道接下来要采取的步骤吗?
【问题讨论】:
如http://www.php.net/manual/en/json.requirements.php
要求
使用这些功能无需安装;它们是 PHP 核心的一部分。
编辑:在comment也看到了这个
在 RHEL5/CentOS5 上添加 EPEL 存储库 (http://fedoraproject.org/wiki/EPEL)。
之后,安装就很简单了:
sudo yum install php-pecl-json
不知道这是否适用于你的问题,我没有 Centos 服务器...
对于 Ubuntu:
sudo aptitude install php5-json
【讨论】:
php -v 的输出)以及php -r 'echo json_encode(true);' 的输出是什么?
就我而言,我遇到了这个问题,因为我正在重新编译 PHP 将 ./configure --disable-all,然后单独添加我需要的扩展。对于 json_encode() 的情况,这当然包含在 JSON 扩展中。要启用此扩展,请将选项 --enable-json 添加到您的配置命令中,即:
./configure --disable-all --enable-json ...
(“...”是指您可能希望启用其他扩展。)
一般来说,任何 PHP 扩展都可以通过包含选项--with-extname 或--enable-extname(其中“extname”是扩展名)来启用。您可以通过发出./configure --help | grep extname 来确定使用这两种语法中的哪一种。当然,您需要使库本身可用,并且可能必须配置它所在的路径(取决于扩展名以及它是否在“默认”路径中)。
【讨论】:
对于php 7,我这样做是为了安装 json(经过数小时的努力):
yum install php70u-json
service nginx restart
service php-fpm restart
【讨论】:
在 CenotOS 和其他 *nix 系统上,即使您使用 --disable-json 编译 PHP,也不会丢失所有内容。首先当然是检查 phpinfo(); 的输出并搜索出现的 json。如果您看到 json support enabled 那么您当然启用了 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。
【讨论】: