json似乎启用但无法运行json_encode

时间:2012-05-02 07:52:56

标签: php pear json

我的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

我真的在寻找和阅读许多文件,但我找不到这种情况的原因。

我真诚地感谢你的帮助。

的Cuong

3 个答案:

答案 0 :(得分:2)

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

检查日志以查看是否在HTTP请求中实际加载了json.so。我的赌注是它不是。

答案 1 :(得分:0)

来自Let's Install JSON for PHP 5

  

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

答案 2 :(得分:0)

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