PHP 치명적 오류 : 정의되지 않은 함수 json_decode () 호출
아파치가 로깅 중 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)를 나열합니다.
우분투를 사용하십니까?
짧은 답변:
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 입니다. 이것은 배포판 / 패키지 관리자 문제입니다.
우리는 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
우분투로 :
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를 추가하십시오.
- conf.d 아래에 적절한 sym 링크를 추가하십시오
- 필요한 경우 Apache2 서비스를 다시 시작하십시오.
phpbrew를 사용하는 경우 정의되지 않은 함수 json_decode ()의 오류를 수정하기 위해 json 확장을 설치 하십시오 .
phpbrew ext install json
나는 같은 질문을 가지고 PHP Fatal error: Call to undefined function json_decode()
있지만 Windows의 cygwin에서 php를 실행합니다. 내가 실행할 때 php -m
json 모듈이 설치되어 있지 않다는 것을 알았습니다. 따라서 cygwin setup.exe를 다시 실행하고 구성 인터페이스에서 json 패키지를 확인하면 문제가 해결됩니다.
핵심 PHP 모듈을 모두 피하는 것도 고려할 수 있습니다.
It is quite common to use the guzzle json tools as a library in PHP apps these days. If your app is a composer app, it is trivial to include them as a part of a composer build. The guzzle tool, as a library, would be a turnkey replacement for the json tool, if you tell PHP to autoinclude the tool.
http://docs.guzzlephp.org/en/stable/search.html?q=json_encode#
http://apigen.juzna.cz/doc/guzzle/guzzle/function-GuzzleHttp.json_decode.html
CENTOS
Scene
I installed PHP in Centos Docker, this is my 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"]
The app returned the same error with json_decode and json_encode
Resolution
Install PHP Common that has json_encode and json_decode
yum install -y php72w-common-7.2.14-1.w7.x86_64
How to find the resolution?
I have another Docker File what build the container for the API and it has the order to install php-mysql client:
yum install php72w-mysql.x86_64 -y
If i use these image to mount the app, the json_encode and json_decode works!! Ok..... What dependencies does this have?
[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!
Yes! Inside the dependences is the common packages. I Installed it into my other container and it works! After, i put de directive into DockerFile, Git commit!! Git Tag!!!! Git Push!!!! Ready!
참고URL : https://stackoverflow.com/questions/18239405/php-fatal-error-call-to-undefined-function-json-decode
'IT박스' 카테고리의 다른 글
JavaScript에서 날짜 차이를 계산하는 방법은 무엇입니까? (0) | 2020.06.06 |
---|---|
실제로 NSAssert의 요점은 무엇입니까? (0) | 2020.06.06 |
명령 행을 사용하여 파일을 압축 해제하는 방법은 무엇입니까? (0) | 2020.06.06 |
호출 된 메소드에서 호출자의 메소드 이름을 얻는 방법은 무엇입니까? (0) | 2020.06.06 |
2 열 div 레이아웃 : 너비가 고정 된 오른쪽 열, 왼쪽 유체 (0) | 2020.06.06 |