2010-07-09 77 views
1

根据我php_info()我的PHP版本是PHP 5.2.9版本PHP功能不可用 - json_decode

但是,由于某种原因,当我尝试使用json_decode,我收到的功能没有发现错误(它应该是PHP 5.2及以上版本)。

PHP.net表明我检查configure命令:

'的./configure' '前缀=的/ usr /本地/ PHP5'“--with-配置文件中 - 扫描 - DIR =/USR/local/php5/etc''--with-apxs2 =/usr/sbin/apxs''--disable-all''--enable-libxml''--with-libxml-dir =/usr/local'' --enable-reflection''--disable-cli''--disable-cgi''--enable-zend-multibyte''--with-regex = php''--enable-filter''--with- PCRE正则表达式= YES'

我不明白一半的这一点,但 - 禁用所有可能的问题?有没有办法使用json_decode而无需重新构建PHP?

我可以找到一个json函数,但我宁愿使用PHP函数中的构建应该可用于我,恐怕可能会有其他功能,我也想以后使用。

执行库JSON存在是否都被编译或没有,我可以直接包括他们时,我想使用它们?

回答

1

- 禁用所有确实是问题。

如果您不能重新编译,或者从Linux打包安装一个“JSON”包,我会强烈建议使用Zend_Json。如果可用,它将自动使用json_ [en | de]代码。

http://framework.zend.com/apidoc/1.10/Zend_Json/Zend_Json.html

$json = Zend_Json::encode($data); 
$data = Zend_Json::decode($data); 
+0

我能够重新编译并更改解决问题的安装指令。 – Steffan 2010-08-19 20:39:38

0

没有。 JSON函数很可能用C编写,并且可以编译到您的PHP二进制文件中,也可以根本不可访问。

要么你需要重新编译,或使用任何替代品6上json.org

+0

yes修复后。问题是我刚发现curl_init也不起作用。我将我的文件从家中的服务器上传到网络服务器,似乎php配置必须非常小。我想我将不得不弄清楚如何重建PHP。 – Steffan 2010-07-09 00:34:36

0
"However, for some reason when i try and use php_decode" 

你试过php_decode()还是json_decode()?有没有这样的东西php_decode()

+0

我认为这只是一个错字。根据[bug报告](http://bugs.php.net/46557),'--disable-all'似乎禁用了JSON。 – Matchu 2010-07-09 00:04:35

+0

错字,固定在帖子中。我也无法使用curl_init(),必须查看有关重新安装PHP而不使用--disable-all – Steffan 2010-07-09 00:35:51

1

json是包含在默认构建配置中的扩展(用C语言编写)。由于您使用了disable-all选项,因此它不包含在您的构建中。

您可以在不重建PHP的情况下添加扩展。只需获取或构建扩展名(json.dll或json.so)并将此行添加到您的php.ini文件中,

extension=json.so