2012-05-02 83 views
1

我的PHP版本是5.1.6 我必須按照說明安裝JSON:JSON似乎使,但不能運行json_encode

# yum install php-devel 
# yum install php-pear 
# yum install gcc 
# pear install json 
# cd /etc/php.d 
# echo "extension=json.so" > json.ini 
# service httpd restart 

現在,我檢查是否啓用了JSON,但我不能運行json_encode:

檢查1:

[[email protected] ~]# php -i | grep json 

結果1:

/etc/php.d/json.ini, 
json 
json support => enabled 
json version => 1.2.1 

檢查2:

[[email protected] ~]# php -r 'var_dump(function_exists("json_encode"));' 

結果2:

bool(true) 

但運行時:

Fatal error: Call to undefined function json_encode() in /var/www/vhosts/ykite.com/httpdocs/fre/json.php on line 8 

這裏運行鏈接:

檢查JSON:http://69.64.69.43/fre/json.php

php_info():http://69.64.69.43/fre/info.php

我確實在尋找和閱讀很多文件,但我找不到這種情況的原因。

我真誠感謝您的幫助。

的Cuong

+0

檢查phpinfo()以查看您的擴展是否已啓用? – Repox

+0

我檢查我的phpinfo():http://69.64.69.43/fre/info.php,它加載了json.ini,但沒有看到任何其他的引用 –

回答

2

如果您var_dump(function_exists('json_encode'))返回true,而你的HTTP請求說,函數不存在;我只能想到一個解釋:CLI和HTTP請求使用不同的php.ini。在您的phpinfo()文檔中,它表示它正在加載json.ini,但是在那裏我沒有看到任何其他對JSON的引用。

檢查您的日誌以查看json.so是否實際上在HTTP請求上加載。我敢打賭,事實並非如此。

+0

我在/ usr/lib64/php中發現了json.so /modules/json.so,有沒有什麼辦法來檢查CLI使用的php.ini? –

+0

我在日誌文件中發現:PHP警告:PHP啓動:無法加載動態庫'/usr/lib64/php/modules/json.so' - /usr/lib64/php/modules/json.so:無法打開共享對象文件:第0行的未知權限被拒絕 –

+0

檢查用戶和json.so組,並檢查PHP用戶是否可以執行該操作。 –

0

Let's Install JSON for PHP 5

Install json - This was actually trickier than expected. I assumed I would be able to install this via pear . Apparently, a PEAR Services_JSON package was developed, but it has never been accepted into the official repository. The trick instead is to use the PECL json package . This was as easy as running pecl install json and watching the compiler do its thing. When it's done you should have a json.so file in your PHP modules directory. (Mine is /usr/lib/php/modules/ .)

+0

我也認爲這很容易安裝,我已經成功安裝在另一臺服務器上。我的json.so位於:/usr/lib64/php/modules/json.so –

+0

從你的phpinfo頁面:**配置文件(php.ini)路徑:**'/ etc/php.ini'嘗試添加'extension =/usr/lib64/php/modules/json.so'在這個.ini文件中測試它 –

+0

看起來不行。我得到這個錯誤:PHP警告:PHP啓動:無法加載動態庫'/usr/lib64/php/modules//usr/lib64/php/modules/json.so' -/usr/lib64/php/modules // usr/lib64/php/modules/json.so:無法打開共享目標文件:沒有這樣的文件或目錄在未知的第0行 –

0

當然,這是一個老話題,但也許有人會碰到這個絆倒就像我在2015年八月,我才改變php.ini中的擴展文件夾路徑解決了這個問題。它以某種方式設置爲「./」,而不是/ usr/lib64/php/modules/