Apache входит в систему PHP Fatal error: Call to undefined function json_decode()
. После некоторого поиска в Google, кажется, эта проблема является результатом отсутствия последней версии php. Как ни странно, запущенные php --version
выходы
PHP 5.5.1-2+debphp.org~precise+2 (cli) (built: Aug 6 2013 10:49:43)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
with Zend OPcache v7.0.2-dev, Copyright (c) 1999-2013, by Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Четко показывает, что моя php
версия больше, чем 5.1
.
Любые идеи относительно того, что может вызвать это, или шаги, чтобы узнать?
РЕДАКТИРОВАТЬ: результат сценария эхом phpversion 5.5.1-2+debphp.org~precise
РЕДАКТИРОВАТЬ: результат phpinfo()
такжеPHP Version 5.5.1-2+debphp.org~precise+2
Кроме того, в phpinfo()
нем перечислены модуль JSON и его авторы (Омар Килани, Скотт МакВикар).
disable_functions
директиву ini, чтобы увидеть, есть лиjson_decode
в этом спискеdisable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_ge\ t_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
php-services-json
. Может быть, это помогает ...json_decode
.Ответы:
Используете Ubuntu?
Короткий ответ:
(или
php7.1-json
или вphp5-json
зависимости от используемой версии PHP)Затем, конечно, убедитесь, что вы перезапустите Apache :
Или, если вы используете PHP-FPM:
(Или
php7.1-fpm
илиphp5-fpm
)объяснение
Debian удалил предыдущее расширение JSON с PHP 5.5rc2 из-за конфликта лицензий.
В лицензии JSON есть пункт, в котором говорится:
Это вызывает проблему с определением Free Software Foundation, которое гласит:
FSF специально указывает лицензию JSON как несвободную .
Да, это выглядит немного глупо. Тем не менее, Debian удалил несовместимое расширение JSON и вместо этого предложил заменяющее расширение , которое функционально эквивалентно.
Для ясности: сам PHP НЕ удалил JSON, он все еще в мастерской . Это проблема дистрибутива / менеджера пакетов.
Расмус довольно ясно дает понять :
Подробнее
http://iteration99.com/2013/php-json-licensing-and-php-5-5/
http://liorkaplan.wordpress.com/2013/06/01/bye-bye-non-free-php-json-extension/
https://bugs.php.net/bug.php?id=63520
http://philsturgeon.co.uk/blog/2013/08/fud-cracker-php-55-never-lost-json-support
источник
5.5.0
порядкеJSON
, это только,5.5.1
что ломается.С Ubuntu:
источник
apt-get install php7.2-json
7.2. Я попробовал это, но все еще не работает. Дай мне ошибку в приложении Laravelphp RuntimeException PHP's json extension is required to use Monolog's NormalizerFormatter
Решение для пользователей LAMP:
Источник
источник
Если вы используете phpbrew, попробуйте установить расширение json, чтобы исправить ошибку с неопределенной функцией json_decode () :
источник
Та же проблема с 7.1
apt-get install php7.1-json sudo nano /etc/php/7.1/mods-available/json.ini
источник
У меня такой же вопрос:
PHP Fatal error: Call to undefined function json_decode()
но я запускаю php под cygwin на Windows. При запускеphp -m
я обнаружил, что модуль json не установлен. Поэтому я снова запускаю cygwin setup.exe, проверяю пакет json из интерфейса конфигурации, и проблема решается.источник
Модуль был установлен, но символической ссылки не было в /etc/php5/cli/conf.d
источник
Вы также можете вообще отказаться от основного модуля PHP.
В наши дни довольно распространено использовать инструменты jzzle в качестве библиотеки в приложениях PHP. Если ваше приложение является приложением для композитора, его легко включить в состав компоновщика. Инструмент guzzle, как библиотека, будет заменой инструмента json под ключ, если вы скажете PHP, чтобы он автоматически включал этот инструмент.
http://docs.guzzlephp.org/en/stable/search.html?q=json_encode#
http://apigen.juzna.cz/doc/guzzle/guzzle/function-GuzzleHttp.json_decode.html
источник
Я установил PHP в Centos Docker, это мой DockerFile:
Приложение вернуло ту же ошибку с json_decode и json_encode
Установите PHP Common, который имеет json_encode и json_decode
У меня есть другой файл Docker, который собирает контейнер для API, и он имеет порядок установки клиента php-mysql:
Если я использую эти изображения для монтирования приложения, json_encode и json_decode работают !! Хорошо ..... Какие зависимости это имеет?
Да! Внутри зависимостей есть общие пакеты. Я установил его в другой контейнер, и он работает! После того, как я поместил директиву de в DockerFile, Git commit !! Git Tag !!!! Git Push !!!! Готов!
источник