2010-07-09 2 views
1

Основываясь на моем php_info() мой PHP версия PHP Version 5.2.9PHP функция не доступна - json_decode

Однако, по какой-то причине, когда я пытаюсь использовать json_decode, я получаю сообщение об ошибке, что функция не найдена (и это должно быть для PHP 5.2 и выше).

PHP.net предлагает проверить команду Configure:

'./configure' 'prefix =/USR/местные/php5' «--with-конфиг-файл-скан-реж =/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-regex = yes '

Я не понимаю половину этого, но проблема -disable-может быть проблемой? Есть ли способ использовать json_decode без повторного создания PHP?

Я мог бы найти функцию json, но я предпочел бы использовать встроенные функции PHP, которые должны быть доступны мне, и боюсь, что могут быть другие функции, которые я захочу использовать позже.

Существуют ли библиотеки для JSON, были ли они скомпилированы или нет, и могу ли я включить их непосредственно, когда захочу их использовать?

ответ

1

-disable-все действительно проблема.

Если вы не можете перекомпилировать или установить пакет «json» из linux-пакета, я бы предложил использовать 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

0

Nope. Функции JSON, скорее всего, написаны на C и либо скомпилированы в ваш двоичный файл PHP, либо вообще недоступны.

Либо вам нужно перекомпилировать, либо использовать любой из 6 вариантов на json.org.

+0

Да исправлено в сообщении. Проблема в том, что я только что обнаружил, что curl_init тоже не работает. Я загружаю свои файлы с моего сервера дома, на веб-сервер, и похоже, что конфигурация php должна быть очень минимальной. Я думаю, мне нужно выяснить, как перестроить PHP. – Steffan

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

вы пытаетесь php_decode() или json_decode()? нет такой вещи, как php_decode()

+0

Я думаю, что это просто опечатка. '--disable-all', кажется, отключает JSON, согласно этому [отчет об ошибке] (http://bugs.php.net/46557). – Matchu

+0

опечатка, исправлена ​​в сообщении.Я также не могу использовать curl_init(), чтобы увидеть, как переустанавливать PHP без -disable-all – Steffan

1

json - это расширение (написанное на языке C), которое включено в конфигурацию сборки по умолчанию. Поскольку вы использовали опцию disable-all, она не включена в вашу сборку.

Вы можете добавить расширение без перестройки PHP. Просто создайте расширение (json.dll или json.so) и добавьте эту строку в файл php.ini,

extension=json.so 
Смежные вопросы