PHP घातक त्रुटि: अपरिभाषित फ़ंक्शन json_decode () को कॉल करें


165

अपाचे लॉगिंग है PHP Fatal error: Call to undefined function json_decode()। कुछ googling के बाद, ऐसा लगता है कि यह समस्या php के नवीनतम संस्करण के नहीं होने का परिणाम है। अजीब तरह से, php --versionouputs चल रहा है

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

EDIT: का परिणाम phpinfo()भी हैPHP Version 5.5.1-2+debphp.org~precise+2

इसके अलावा, में phpinfo(), यह मॉड्यूल JSON और मॉड्यूल लेखकों (उमर किलानी, स्कॉट MacVicar) को सूचीबद्ध करता है।


4
उस सूची में है disable_functionsया नहीं json_decodeयह देखने के लिए ini निर्देश देखें
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,
शीशे का आवरण

Ubuntu 12.04 में एक पैकेज है php-services-json:। शायद यह मदद करता है ...
jgb 14'13

1
@jgb वह PEAR पैकेज Services_Json है। जो कि काफी व्यापक है, केवल जावास्क्रिप्ट ही नहीं, बल्कि थोड़ा जावास्क्रिप्ट भी पार करता है। लेकिन दूसरे यूजरलैंड कार्यान्वयन हैं जो सीधे लागू होते हैं json_decode
मारियो

जवाबों:


354

उबंटू का उपयोग करना?

संक्षिप्त जवाब:

sudo apt-get install php7.2-json

(या php7.1-jsonया php5-jsonआप चला रहे हैं PHP संस्करण के आधार पर)

फिर निश्चित रूप से सुनिश्चित करें कि आप अपाचे को पुनरारंभ करते हैं :

sudo service apache2 restart

या यदि आप PHP-FPM का उपयोग कर रहे हैं:

sudo service php7.2-fpm restart

(या php7.1-fpmया php5-fpm)

व्याख्या

लाइसेंस विवाद के कारण डेबियन ने पिछले JSON एक्सटेंशन को PHP 5.5rc2 के रूप में हटा दिया है।

JSON लाइसेंस एक खंड जिसमें कहा गया है:

सॉफ्टवेयर का इस्तेमाल अच्छे के लिए किया जाएगा, न कि बुराई के लिए।

यह नि: शुल्क सॉफ्टवेयर फाउंडेशन की मुफ्त सॉफ्टवेयर की परिभाषा के साथ एक समस्या का कारण बनता है जो बताता है:

किसी भी उद्देश्य के लिए कार्यक्रम चलाने की स्वतंत्रता (स्वतंत्रता ०)।

FSF विशेष रूप से JSON लाइसेंस को नॉनफ्री के रूप में सूचीबद्ध करता है

हाँ यह थोड़ा मूर्खतापूर्ण लगता है। फिर भी डेबियन ने गैर-अनुपालन JSON एक्सटेंशन को हटा दिया है, और इसके बजाय एक प्रतिस्थापन एक्सटेंशन की पेशकश की है जो कार्यात्मक रूप से समकक्ष है।

स्पष्ट होने के लिए: PHP ने स्वयं JSON को नहीं हटाया है, यह अभी भी मास्टर में है । यह एक distro / पैकेज प्रबंधक समस्या है।

रासमस यह बहुत स्पष्ट करता है :

हमने json को नहीं हटाया है और हम कभी भी json सपोर्ट के बिना php के वर्जन को रिलीज़ नहीं करेंगे। 5.5 में कोई भी बदलाव आपके द्वारा उपयोग की जा रही distro पैकेजिंग के कारण होता है जिस पर हमारा कोई नियंत्रण नहीं है।

अधिक जानकारी

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टूटता है।
मिररफॉर्फ़ेट

2
5.5.3 में न तो यह है (उबंटू 13.10)
लुइस लोबो बोरोबिया

9
क्रिस क्रिस उल्लेख के साथ json मॉड्यूल स्थापित करने के बाद अपाचे को पुनः आरंभ करने के लिए मत भूलना।
पावेल

1
अगर php-json php-common की निर्भरता होती तो यह सब खत्म हो जाता ... Bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1280030 ... कृपया वोट करें यदि यह आपके लिए समस्या थी।
rickfoosusa

20
क्या किसी को यह विडंबनापूर्ण "बुराई" लगती है कि इस सॉफ़्टवेयर लाइसेंसिंग बहिष्कार से मुझे अनुसंधान के समय का एक घंटा खर्च होता है?
पुनरावर्तन.निन्जा

13

उबंटू के साथ:

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

apt-get install php7.2-json 7.2 के बारे में क्या । मैंने यह कोशिश की लेकिन फिर भी काम नहीं कर रहा है। मुझे लार्वा ऐप पर त्रुटि देते हुए php RuntimeException PHP's json extension is required to use Monolog's NormalizerFormatter
स्मित पटेल

8

LAMP उपयोगकर्ताओं के लिए समाधान:

apt-get install php5-json
service apache2 restart

स्रोत


यदि कोई पुनरारंभ त्रुटि को हल करने में विफल रहता है, तो Apache2 प्रक्रियाओं को मारें और शुरू करें: sudo pkill apache2; सेवा
अपाचे 2

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 के तहत उपयुक्त सिम्बल लिंक जोड़ें
  • Apache2 सेवा को पुनरारंभ करें (यदि आवश्यक हो)

2

मेरे पास एक ही सवाल है: PHP Fatal error: Call to undefined function json_decode()लेकिन मैं विंडोज पर साइबरविन के तहत php चलाता हूं। जब मैं दौड़ता हूं php -m, तो मैंने पाया कि कोई जसन मॉड्यूल स्थापित नहीं है। इसलिए मैं फिर से cygwin setup.exe चलाता हूं, कॉन्फ़िगरेशन इंटरफ़ेस से json पैकेज की जांच करता हूं, और समस्या हल हो गई है।


1

मॉड्यूल स्थापित किया गया था लेकिन प्रतीकात्मक लिंक /etc/php5/cli/conf.d में नहीं था


0

तुम भी पूरी तरह से कोर PHP मॉड्यूल से बचने पर विचार कर सकते हैं।

इन दिनों PHP ऐप्स में लाइब्रेरी के रूप में गज़ल जसन टूल्स का उपयोग करना काफी आम है। यदि आपका ऐप एक संगीतकार ऐप है, तो उन्हें कंपोज़र बिल्ड के एक भाग के रूप में शामिल करना तुच्छ है। यदि आप PHP को टूल को इंगित करने के लिए कहते हैं, तो एक लाइब्रेरी के रूप में, गुज्जर टूल, जोंस टूल के लिए एक टर्नकी रिप्लेसमेंट होगा।

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

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


अतिरिक्त त्रुटि की जाँच के साथ
गुज़ले

0

CentOS

स्थल

मैंने 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 के साथ एक ही त्रुटि वापस की

संकल्प

PHP कॉमन स्थापित करें जिसमें json_encode और json_decode है

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

कैसे करें संकल्प?

मेरे पास एक और डॉकर फ़ाइल है जो एपीआई के लिए कंटेनर का निर्माण करती है और इसमें php-mysql क्लाइंट स्थापित करने का आदेश है:

yum install php72w-mysql.x86_64 -y

अगर मैं ऐप को माउंट करने के लिए इन छवि का उपयोग करता हूं, तो json_encode और json_decode काम करता है !! ठीक है ..... इस पर निर्भरता क्या है?

[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!

हाँ! अंदर निर्भरता आम पैकेज है। मैंने इसे अपने अन्य कंटेनर में स्थापित किया और यह काम करता है! के बाद, मैं D निर्देश में DockerFile, Git प्रतिबद्ध! Git टैग !!!! पुश पुश !!!! तैयार!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.