问题
We're running CentOS 6 and PHP 5.3.8 (as an apache module) which should have JSON as part of it's core (I'm told). Looking at # php -i
on the command line I can see under Configure Command '--enable-json=shared'
... great!
However, looking at php_info() on a web page Configure Command shows '--disable-json'
.
No problem I thought, I'll just install it using pecl:
# yum update php
# yum install php-pear
# yum install gcc
# pecl install json
# service httpd restart
Success, that aught to do it I thought. However php -m shows:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/json.so' - /usr/lib64/php/modules/json.so: undefined symbol: ZVAL_DELREF in Unknown on line 0
Apologies if this is a silly question but does anyone know what's going on here and could you point me in the right direction on how to fix this so that JSON starts working?
Many thanks
回答1:
Thought I'd follow up with the solution. The PECL installation seemed to conflict with PHP 5.3.8 so after a bit of research and some advice I toyed with the idea of:
# yum remove php
# yum install php
However, after further advice instead went with:
# yumdownloader php-common
# rpm -Uvh --force php-common*.rpm
# service httpd reload
# rm php-common*.rpm
This did the trick and JSON is now working again. Hope this helps someone else.
Thanks
回答2:
download json-1.2.1.tgz
FROM PECL
enter code heretar zxvf json-1.2.1.tgz
cd json-1.2.1
vi JSON_parser.c
Find ZVAL_DELREF
replace to Z_DELREF_P
(You can Find in 3 place)
And Save file
Then
phpize
./configure
make
make install
You can get your json.so don't forget add to php.ini
回答3:
- Login to SSH
Make tmp and var/tmp exec
mount -v -o remount,exec /tmp
mount -v -o remount,exec /var/tmp
No go ahead and install JSON
pecl install json
And finally, make tmp and var/tmp noexec again
mount -v -o remount,noexec /tmp
mount -v -o remount,noexec /var/tmp
来源:https://stackoverflow.com/questions/7979864/php-5-3-8-json-centos-6