PHP фатальная ошибка: вызов неопределенной функции JSON decode()



Apache ведет журнал PHP Fatal error: Call to undefined function json_decode(). После некоторого googling, похоже, эта проблема является результатом отсутствия последней версии 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.



любые идеи относительно того, что может вызвать это, или шаги, которые необходимо предпринять, чтобы выяснить?



EDIT: результат скрипта эхом phpversion является 5.5.1-2+debphp.org~precise



редактировать: результат phpinfo() тоже PHP Version 5.5.1-2+debphp.org~precise+2



кроме того, в phpinfo(), в нем перечислены модуль JSON и авторы модуля (Омар Килани, Скотт Маквикар).

692   8  

8 ответов:

С Помощью 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 из-за к конфликту лицензий.

The лицензия JSON имеет предложение, которое гласит:

программное обеспечение должно использоваться для добра, а не зла.

это вызывает проблему с определение свободного программного обеспечения Фонда свободного программного обеспечения в которой говорится:

свобода запуска программы, для любых целей (свобода 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

С Ubuntu :

sudo apt-get install php5-json
sudo service php5-fpm restart

решение для пользователей лампы:

apt-get install php5-json
service apache2 restart

источник

модуль был установлен, но символическая ссылка не была в /etc/php5/cli / conf.d

та же проблема с 7.1

apt-get install php7.1-json sudo nano /etc/php/7.1/mods-available/json.ini

  • добавить json.so в новый файл
  • добавьте соответствующую ссылку sym в разделе conf.d
  • перезапустить службу apache2 (при необходимости)

Если вы используете phpbrew попробуйте установить json расширение для исправления ошибки с неопределено функция json_decode():

phpbrew ext install json

у меня тот же вопрос: PHP Fatal error: Call to undefined function json_decode(), но я запускаю php под cygwin на Windows. Когда я бегу php -m, Я обнаружил, что модуль json не установлен. Поэтому я запускаю cygwin setup.exe снова, проверьте пакет json из интерфейса конфигурации, и проблема решена.

вы также можете рассмотреть возможность полного отказа от основного PHP-модуля.

в наши дни довольно часто можно использовать инструменты guzzle json в качестве библиотеки в PHP-приложениях. Если ваше приложение является приложением composer, тривиально включать их в состав сборки composer. Инструмент 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

Comments

    Ничего не найдено.