1

我的 PHP 版本是 5.1.6 我已经按照说明安装了 Json:

# yum install php-devel
# yum install php-pear
# yum install gcc
# pear install json
# cd /etc/php.d
# echo "extension=json.so" > json.ini
# service httpd restart

现在,我检查是否启用了 Json,但我无法运行 json_encode:

检查1:

[root@69-64-69-43 ~]# php -i | grep json

结果1:

/etc/php.d/json.ini,
json
json support => enabled
json version => 1.2.1

检查2:

[root@69-64-69-43 ~]# php -r 'var_dump(function_exists("json_encode"));'

结果 2:

bool(true)

但是运行时:

Fatal error: Call to undefined function json_encode() in /var/www/vhosts/ykite.com/httpdocs/fre/json.php on line 8

这是运行链接:

检查Json:http: //69.64.69.43/fre/json.php

php_info():http: //69.64.69.43/fre/info.php

我真的在寻找和阅读很多文件,但我找不到这个案例的原因。

我衷心感谢您的帮助。

4

3 回答 3

2

如果您var_dump( function_exists( 'json_encode' ) )返回 true,而您的 HTTP 请求表明该函数不存在;我只能想到一种解释:CLI 和 HTTP 请求使用不同的 php.ini。在您的phpinfo( )文档中,它说它正在加载 json.ini,但我没有看到任何其他对 JSON 的引用。

检查您的日志以查看 json.so 是否实际上是根据 HTTP 请求加载的。我敢打赌,事实并非如此。

于 2012-05-02T07:58:26.457 回答
0

来自让我们为 PHP 5 安装 JSON

安装 json - 这实际上比预期的要棘手。我以为我可以通过pear. 显然,开发了一个PEAR Services_JSON 包,但它从未被官方存储库接受。相反,诀窍是使用PECL json 包。这就像运行pecl install json并观察编译器做它的事情一样简单。完成json.so后,您的 PHP 模块目录中应该有一个文件。(我的是/usr/lib/php/modules/。)

于 2012-05-02T08:10:25.977 回答
0

当然,这是一个老话题,但也许有人会像我在 2015 年 8 月那样偶然发现这个问题。我通过更改 php.ini 中的扩展文件夹路径来解决这个问题。它以某种方式设置为“./”而不是 /usr/lib64/php/modules/

于 2015-08-13T20:43:25.440 回答