PHP 치명적 오류 : 정의되지 않은 함수 json_decode () 호출


165

아파치가 로깅 중 PHP Fatal error: Call to undefined function json_decode()입니다. 인터넷 검색 후이 문제는 최신 버전의 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 및 모듈 작성자 (Omar Kilani, Scott MacVicar)를 나열합니다.


4
disable_functionsini 지시문을 확인하여 json_decode해당 목록에 있는지 확인하십시오
Orangepill

json 모듈이 phpinfo () 출력에 표시됩니까?
tcmitche

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,
MirroredFate

Ubuntu 12.04에는 패키지가 php-services-json있습니다. 아마 이것이 도움이 될 것입니다.
jgb

1
@jgb PEAR 패키지 Services_Json입니다. 또한 매우 포괄적이며 JSON뿐만 아니라 약간의 Javascript를 구문 분석합니다. 그러나 직접 재 구현하는 다른 사용자 구현이 있습니다 json_decode.
마리오

답변:


354

우분투를 사용하십니까?

짧은 답변:

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)

설명

라이센스 충돌로 인해 데비안은 PHP 5.5rc2에서 이전 JSON 확장을 제거했습니다.

JSON 라이센스는 내용의 조항이있다 :

소프트웨어는 악이 아닌 선을 위해 사용해야합니다.

이로 인해 Free Software Foundation의 자유 소프트웨어 정의에 문제가 발생합니다 .

어떤 목적 으로든 프로그램을 실행할 수있는 자유 (자유 0).

FSF는 계속 해서 JSON 라이센스를 nonfree로 표시 합니다.

예, 조금 어리석은 것 같습니다. 그럼에도 불구하고 데비안은 비 호환 JSON 확장을 제거했으며 기능적으로 동등한 대체 확장 을 제공했습니다 .

분명히하기 위해 : PHP 자체는 JSON을 제거하지 않았으며 여전히 master 입니다. 이것은 배포판 / 패키지 관리자 문제입니다.

Rasmus는 그것을 매우 분명하게 만듭니다 .

우리는 json을 제거하지 않았으며 json 지원 기능이 내장되어 있지 않은 php 버전을 출시하지 않을 것입니다. 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


나는 것처럼 나타납니다 언급 돌아 왔어요 5.5.0미세 함께 JSON이 아니라, 5.5.1휴식 것이다.
MirroredFate

2
5.5.3도 없습니다 (Ubuntu 13.10)
Luis Lobo Borobia

9
Chris가 언급 한 명령으로 json 모듈을 설치 한 후 아파치를 다시 시작하는 것을 잊지 마십시오.
Pavel

1
php-json이 php-common의 의존성 이라면 이것이 사라질 것입니다 ... bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1280030 ...이 문제가 있다면 투표하십시오.
rickfoosusa

20
누구든지이 소프트웨어 라이센스 제외로 인해 1 시간의 연구 시간이 걸린다는 것이 아이러니하게 "악" 하다는 것을 알고 있습니까?
recursion.ninja

13

우분투로 :

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

apt-get install php7.2-json 7.2는 어떤가요? 나는 이것을 시도했지만 여전히 작동하지 않습니다. laravel 앱에서 오류가 발생했습니다 php RuntimeException PHP's json extension is required to use Monolog's NormalizerFormatter
Patel Smit

8

램프 사용자를위한 솔루션 :

apt-get install php5-json
service apache2 restart

출처


재시작으로 오류를 해결하지 못하면 apache2 프로세스를 종료하고 시작하십시오. sudo pkill apache2; 서비스 apache2 시작
xilef

3

phpbrew를 사용하는 경우 정의되지 않은 함수 json_decode ()의 오류를 수정하기 위해 json 확장을 설치 하십시오 .

phpbrew ext install json

2

7.1과 동일한 문제

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

  • 새 파일에 json.so 추가
  • conf.d 아래에 적절한 sym 링크를 추가하십시오
  • 필요한 경우 Apache2 서비스를 다시 시작하십시오.

2

나는 같은 질문을 가지고 PHP Fatal error: Call to undefined function json_decode()있지만 Windows의 cygwin에서 php를 실행합니다. 내가 실행할 때 php -mjson 모듈이 설치되어 있지 않다는 것을 알았습니다. 따라서 cygwin setup.exe를 다시 실행하고 구성 인터페이스에서 json 패키지를 확인하면 문제가 해결됩니다.



0

핵심 PHP 모듈을 모두 피하는 것도 고려할 수 있습니다.

요즘 PHP 응용 프로그램에서 guzzle json 도구를 라이브러리로 사용하는 것이 일반적입니다. 앱이 작곡가 앱인 경우 작곡가를 작곡가 빌드의 일부로 포함하는 것은 쉽지 않습니다. PHP가 도구를 자동으로 포함하도록 지시하면 라이브러리로서의 guzzle 도구는 json 도구를 대신하는 턴키 대체품입니다.

http://docs.guzzlephp.org/en/stable/search.html?q=json_encode#

http://apigen.juzna.cz/doc/guzzle/guzzle/function-GuzzleHttp.json_decode.html


Guzzle의 json_decode가 추가 오류 검사와 함께 PHP의 json_decode사용 하고 있으므로 귀하의 답변이 유효하지 않습니다.
emix

0

센 토스

장면

Centos Docker에 PHP를 설치했습니다. 이것은 DockerFile입니다.

FROM centos:7.6.1810

LABEL maintainer="teran.a.joan@gmail.com"

RUN yum install httpd-2.4.6-88.el7.centos -y
RUN rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
RUN rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
RUN yum install php72w -y
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]

앱이 json_decode 및 json_encode와 동일한 오류를 반환했습니다.

해결

json_encode 및 json_decode가있는 PHP Common 설치

yum install -y php72w-common-7.2.14-1.w7.x86_64

해상도를 찾는 방법?

API 컨테이너를 빌드하는 또 다른 Docker 파일이 있으며 php-mysql 클라이언트를 설치하는 순서가 있습니다.

yum install php72w-mysql.x86_64 -y

이 이미지를 사용하여 앱을 마운트하면 json_encode 및 json_decode가 작동합니다! Ok ..... 이것은 어떤 의존성을 가지고 있습니까?

[root@c023b46b720c etc]# yum install php72w-mysql.x86_64
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirror.gtdinternet.com
 * epel: mirror.globo.com
 * extras: linorg.usp.br
 * updates: mirror.gtdinternet.com
 * webtatic: us-east.repo.webtatic.com
Resolving Dependencies
--> Running transaction check
---> Package php72w-mysql.x86_64 0:7.2.14-1.w7 will be installed
--> Processing Dependency: php72w-pdo(x86-64) for package: php72w-mysql-7.2.14-1.w7.x86_64
--> Processing Dependency: libmysqlclient.so.18(libmysqlclient_18)(64bit) for package: php72w-mysql-7.2.14-1.w7.x86_64
--> Processing Dependency: libmysqlclient.so.18()(64bit) for package: php72w-mysql-7.2.14-1.w7.x86_64
--> Running transaction check
---> Package mariadb-libs.x86_64 1:5.5.60-1.el7_5 will be installed
---> Package php72w-pdo.x86_64 0:7.2.14-1.w7 will be installed
--> Processing Dependency: php72w-common(x86-64) = 7.2.14-1.w7 for package: php72w-pdo-7.2.14-1.w7.x86_64
--> Running transaction check
---> Package php72w-common.x86_64 0:7.2.14-1.w7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================
 Package                   Arch               Version                        Repository            Size
========================================================================================================
Installing:
 php72w-mysql              x86_64             7.2.14-1.w7                    webtatic              82 k
Installing for dependencies:
 mariadb-libs              x86_64             1:5.5.60-1.el7_5               base                 758 k
 php72w-common             x86_64             7.2.14-1.w7                    webtatic             1.3 M
 php72w-pdo                x86_64             7.2.14-1.w7                    webtatic              89 k

Transaction Summary
========================================================================================================
Install  1 Package (+3 Dependent packages)

Total download size: 2.2 M
Installed size: 17 M
Is this ok [y/d/N]: y
Downloading packages:
(1/4): mariadb-libs-5.5.60-1.el7_5.x86_64.rpm                                    | 758 kB  00:00:00     
(2/4): php72w-mysql-7.2.14-1.w7.x86_64.rpm                                       |  82 kB  00:00:01     
(3/4): php72w-pdo-7.2.14-1.w7.x86_64.rpm                                         |  89 kB  00:00:01     
(4/4): php72w-common-7.2.14-1.w7.x86_64.rpm                                      | 1.3 MB  00:00:06     
--------------------------------------------------------------------------------------------------------
Total                                                                   336 kB/s | 2.2 MB  00:00:06     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:mariadb-libs-5.5.60-1.el7_5.x86_64                                                 1/4 
  Installing : php72w-common-7.2.14-1.w7.x86_64                                                     2/4 
  Installing : php72w-pdo-7.2.14-1.w7.x86_64                                                        3/4 
  Installing : php72w-mysql-7.2.14-1.w7.x86_64                                                      4/4 
  Verifying  : php72w-common-7.2.14-1.w7.x86_64                                                     1/4 
  Verifying  : 1:mariadb-libs-5.5.60-1.el7_5.x86_64                                                 2/4 
  Verifying  : php72w-pdo-7.2.14-1.w7.x86_64                                                        3/4 
  Verifying  : php72w-mysql-7.2.14-1.w7.x86_64                                                      4/4 

Installed:
  php72w-mysql.x86_64 0:7.2.14-1.w7                                                                     

Dependency Installed:
  mariadb-libs.x86_64 1:5.5.60-1.el7_5                php72w-common.x86_64 0:7.2.14-1.w7               
  php72w-pdo.x86_64 0:7.2.14-1.w7                    

Complete!

예! 종속성 내부에는 공통 패키지가 있습니다. 다른 컨테이너에 설치했는데 작동합니다! 이후, 나는 지시어를 DockerFile에 넣고 Git commit! 힘내 태그 !!!! 힘내 밀어 !!!! 준비된!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.