PHP Неустранимая ошибка: вызов функции undefined json_decode()
Apache регистрирует PHP Fatal error: Call to undefined function json_decode()
. После некоторых поисковых запросов, похоже, эта проблема возникает из-за отсутствия последней версии php. Как ни странно, запуск php --version
ouputs
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
.
Любые идеи относительно того, что может вызвать это, или шаги, которые нужно предпринять, чтобы узнать?
ИЗМЕНИТЬ: Результат эхо-рефлексии script равен 5.5.1-2+debphp.org~precise
EDIT: результат phpinfo()
также PHP Version 5.5.1-2+debphp.org~precise+2
Кроме того, в phpinfo()
он перечисляет модуль JSON и авторов модуля (Омар Килани, Скотт Маквикар).
Ответы
Ответ 1
Использование Ubuntu?
Короткий ответ:
sudo apt-get install php7.2-json
(или php7.1-json
или php5-json
зависимости от версии PHP, которую вы используете)
Затем, конечно, убедитесь, что вы перезапустите Apache:
sudo service apache2 restart
Или если вы используете PHP-FPM:
sudo service php7.2-fpm restart
(Или php7.1-fpm
или php5-fpm
)
объяснение
Debian удалил предыдущее расширение JSON с PHP 5.5rc2 из-за конфликта лицензий.
В лицензии JSON есть пункт, который гласит:
Программное обеспечение должно использоваться для Добра, а не Зла.
Это вызывает проблему со свободным программным обеспечением Free Software Foundation, в котором говорится:
Свобода запуска программы для любых целей (свобода 0).
FSF продолжает конкретно перечислять лицензию JSON как несвободную.
Да, это кажется немного глупым. Тем не менее Debian удалил несовместимое расширение JSON и вместо этого предложил заменяющее расширение, которое функционально эквивалентно.
Чтобы быть ясным: сам PHP НЕ удалил JSON, он все еще в мастер. Это проблема с дистрибутивом/пакетом.
Расмус делает это довольно ясно:
Мы не удалили json, и мы никогда не выпустим версию php без встроенной поддержки json. Любые изменения в 5.5 происходят из-за любой дистрибутивной упаковки, которую вы используете, и мы не контролируем ее.
Подробнее
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
Ответ 2
С Ubuntu:
sudo apt-get install php5-json
sudo service php5-fpm restart
Ответ 3
Решение для пользователей LAMP:
apt-get install php5-json
service apache2 restart
Источник
Ответ 4
У меня такой же вопрос: PHP Fatal error: Call to undefined function json_decode()
, но я запускаю php под cygwin в Windows. Когда я запустил php -m
, я обнаружил, что модуль json не установлен. Поэтому я снова запускаю cygwin setup.exe, проверяю пакет json из интерфейса конфигурации, и проблема решена.
Ответ 5
Модуль был установлен, но символическая ссылка не была в/etc/php5/cli/conf.d
Ответ 6
Та же проблема с 7.1
apt-get install php7.1-json
sudo nano /etc/php/7.1/mods-available/json.ini
- Добавить json.so в новый файл
- Добавьте соответствующую символическую ссылку в conf.d
- Перезапустите службу apache2 (если необходимо)
Ответ 7
Если вы используете phpbrew, попробуйте установить расширение json, чтобы исправить ошибку с помощью undefined function json_decode():
phpbrew ext install json
Ответ 8
вы также можете отказаться от основного PHP-модуля.
В наши дни довольно часто использовать инструменты guzzle json в качестве библиотеки в приложениях PHP. Если ваше приложение является композиторским приложением, тривиально включать их в состав сборника композитора.
Инструмент жужжания, как библиотека, будет заменой "под ключ" для инструмента 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