Моя версия 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
Если ваш var_dump( function_exists( 'json_encode' ) )
возвращает true, в то время как ваш HTTP-запрос говорит, что функция не существует; есть только одно объяснение, которое я могу придумать: запросы CLI и HTTP используют другой php.ini. В вашем документе phpinfo( )
говорится, что он загружает json.ini, но я не вижу никакой другой ссылки на JSON.
Проверьте свои журналы, чтобы узнать, действительно ли json.so загружается по HTTP-запросу. Моя ставка заключается в том, что это не так.
От установки JSON для PHP 5
Установите json – это было на самом деле сложнее, чем ожидалось. Я предположил, что смогу установить это через
pear
. По-видимому, пакет PEAR Services_JSON был разработан, но он никогда не был принят в официальный репозиторий. Трюк вместо этого заключается в использовании пакета PECL json . Это было так же просто, как запуститьpecl install json
и наблюдать за компилятором. Когда это будет сделано, у вас должен быть файлjson.so
в вашем каталоге модулей PHP. (Mine –/usr/lib/php/modules/
.)
Конечно, это старая тема, но, возможно, кто-то столкнется с этим, как в августе 2015 года. Я исправил это, изменив путь к папке расширений в php.ini. Он был как-то установлен на «./», а не / usr / lib64 / php / modules /