2011-09-06 34 views
7

有人可以建議如何啓用PHP中的json_encode函數嗎?在PHP中啓用json_encode

我有一個乾淨的Centos 5.6安裝,並剛安裝Virtualmin。

有誰知道接下來的步驟?

+0

你安裝什麼版本的PHP? – ace

+3

當你調用json_encode()函數時有什麼問題?你會得到什麼樣的錯誤信息? –

回答

8

http://www.php.net/manual/en/json.requirements.php

要求

沒有使用這些功能所需要的安裝;他們是PHP核心的一部分。

只是PHP >= 5.2.0

編輯:看見一個comment也是這個

在RHEL5/CentOS5添加EPEL軟件庫(http://fedoraproject.org/wiki/EPEL)。

之後,安裝簡單:

sudo yum install php-pecl-json 

不知道這是否適用於你的問題,我沒有一個CentOS服務器...

的Ubuntu :

sudo aptitude install php5-json 
+0

如果我運行該命令,則返回說,錯誤php53-與php-common的常見衝突。 – Rob

+0

正如我所說,我不知道你是否真的需要這個,這只是一個提示。請更新你的問題,更詳細的信息,你有什麼PHP版本(輸出'php -v')和'php -r'的輸出是什麼echo json_encode(true);''? – Fabio

+0

對不起,我的錯誤 - 小學生錯誤。 PHP 5.1!現在全部排序。 – Rob

2

在我的情況,我碰到這個問題就來了,因爲我重新編譯PHP ./configure --disable-all然後分別加入我n我需要的擴展。對於json_encode()的情況,這當然包含在JSON擴展中。要啓用此擴展,選項--enable-json添加到您的configure命令,即:

./configure --disable-all --enable-json ...

(其中「...」指的是事實,你可以有你可能希望啓用其他擴展。)

通常,任何PHP擴展都可以通過包含選項--with-extname--enable-extname(其中「extname」是擴展名)啓用。您可以通過發行./configure --help | grep extname來確定要使用這兩種語法中的哪一種。當然,您需要使庫可用,並且可能必須配置它所在的路徑(取決於擴展名以及它是否在「默認」路徑中)。

0

在CenotOS和其他* nix系統上,即使您的PHP編譯爲--disable-json並非所有的東西都可能丟失。第一件事當然是檢查你的phpinfo();並搜索發生的json。如果你看到啓用json支持那麼當然你已經啓用了json擴展,但是如果沒有,看看你是否有/etc/php.d/json.ini列出解析的附加.ini文件。如果你這樣做,那麼這個文件可能看起來像這樣:

;啓用json擴展模塊
; extension = json.so

取消註釋第二行並重新啓動Apache。如果Apache啓動時沒有錯誤,請再次檢查您的phpinfo()並查看是否啓用了您的json擴展。如果確實如此,則全部設置,如果沒有設置,則可能必須找到php擴展所在的目錄,並且如果您在其中看到json.so,請編輯最後一行以包含該文件的完整路徑並重新啓動Apache。如果您沒有json.so文件與您的其他php擴展文件,您可能將不得不重新編譯一個擴展(您不需要重新編譯整個PHP,但您肯定可以,這一次 - enable-json),然後重試。另外,如果您沒有解析額外的.ini文件,您可以嘗試在主php.ini中添加此擴展,該擴展通常是/etc/php.ini。

0

對於php 7我這樣做是爲了安裝JSON(掙扎了幾個小時之後):

yum install php70u-json 
service nginx restart 
service php-fpm restart