Apache sedang login PHP Fatal error: Call to undefined function json_decode()
. Setelah beberapa googling, sepertinya masalah ini adalah hasil dari tidak memiliki versi terbaru dari php. Anehnya, menjalankan 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
Jelas menunjukkan bahwa php
versi saya lebih besar dari 5.1
.
Adakah gagasan tentang apa yang menyebabkan hal ini, atau langkah-langkah yang perlu diambil untuk mengetahuinya?
EDIT: Hasil dari skrip yang mendukung phpversion adalah 5.5.1-2+debphp.org~precise
EDIT: Hasilnya phpinfo()
jugaPHP Version 5.5.1-2+debphp.org~precise+2
Selanjutnya, dalam phpinfo()
, itu daftar modul JSON dan penulis modul (Omar Kilani, Scott MacVicar).
disable_functions
arahan ini untuk melihat apakahjson_decode
ada dalam daftar itudisable_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,
php-services-json
. Mungkin ini membantu ...json_decode
.Jawaban:
Menggunakan Ubuntu?
Jawaban singkat:
(atau
php7.1-json
atauphp5-json
tergantung pada versi PHP yang Anda jalankan)Maka tentu saja pastikan Anda me-restart Apache :
Atau jika Anda menggunakan PHP-FPM:
(Atau
php7.1-fpm
atauphp5-fpm
)Penjelasan
Debian telah menghapus ekstensi JSON sebelumnya pada PHP 5.5rc2 karena konflik lisensi.
The lisensi JSON memiliki klausul yang menyatakan:
Ini menyebabkan masalah dengan definisi Free Software Foundation tentang perangkat lunak gratis yang menyatakan:
FSF selanjutnya secara khusus mencantumkan lisensi JSON sebagai tidak bebas .
Ya sepertinya agak konyol. Namun demikian Debian telah menghapus ekstensi JSON yang tidak patuh, dan sebaliknya menawarkan ekstensi pengganti yang secara fungsional setara.
Untuk menjadi jelas: PHP itu sendiri TIDAK menghapus JSON, itu masih di master . Ini adalah masalah manajer distro / paket.
Rasmus membuatnya sangat jelas :
Keterangan lebih lanjut
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
sumber
5.5.0
baik-baik sajaJSON
, hanya5.5.1
itu yang rusak.Dengan Ubuntu:
sumber
apt-get install php7.2-json
7.2. Saya mencoba ini tetapi masih tidak berhasil. Memberi saya kesalahan pada aplikasi laravelphp RuntimeException PHP's json extension is required to use Monolog's NormalizerFormatter
Solusi untuk pengguna LAMP:
Sumber
sumber
Jika Anda menggunakan phpbrew, coba instal ekstensi json untuk memperbaiki kesalahan dengan fungsi yang tidak ditentukan json_decode () :
sumber
Masalah yang sama dengan 7.1
apt-get install php7.1-json sudo nano /etc/php/7.1/mods-available/json.ini
sumber
Saya memiliki pertanyaan yang sama:,
PHP Fatal error: Call to undefined function json_decode()
tetapi saya menjalankan php di bawah cygwin di Windows. Ketika saya menjalankanphp -m
, saya menemukan bahwa tidak ada modul json yang diinstal. Jadi saya jalankan cygwin setup.exe lagi, periksa paket json dari antarmuka konfigurasi, dan masalahnya terpecahkan.sumber
Modul ini dipasang tetapi tautan simbolik tidak ada di /etc/php5/cli/conf.d
sumber
Anda mungkin juga mempertimbangkan untuk menghindari modul PHP inti sekaligus.
Sangat umum untuk menggunakan alat guzzle json sebagai perpustakaan di aplikasi PHP hari ini. Jika aplikasi Anda adalah aplikasi komposer, sepele untuk memasukkannya sebagai bagian dari komposer. Alat guzzle, sebagai pustaka, akan menjadi pengganti turnkey untuk alat json, jika Anda memberi tahu PHP untuk menyertakan alat secara otomatis.
http://docs.guzzlephp.org/en/stable/search.html?q=json_encode#
http://apigen.juzna.cz/doc/guzzle/guzzle/function-GuzzleHttp.json_decode.html
sumber
Saya menginstal PHP di Centos Docker, ini DockerFile saya:
Aplikasi mengembalikan kesalahan yang sama dengan json_decode dan json_encode
Instal PHP Common yang memiliki json_encode dan json_decode
Saya memiliki File Docker lain yang membangun wadah untuk API dan memiliki perintah untuk menginstal klien php-mysql:
Jika saya menggunakan gambar ini untuk memasang aplikasi, json_encode dan json_decode berfungsi !! Ok ..... Ketergantungan apa yang dimiliki ini?
Iya! Di dalam dependensi adalah paket umum. Saya memasangnya di wadah saya yang lain dan berfungsi! Setelah itu, saya menaruh arahan ke DockerFile, Git commit !! Tag Git !!!! Git Push !!!! Siap!
sumber