我们正在运行CentOS 6和PHP 5.3.8(作为apache模块),它应该将JSON作为其核心的一部分(我被告知)。在命令行上查看# php -i
,我可以在配置命令'--enable-json=shared'
下看到...很棒!
但是,在网页上查看php_info()配置命令会显示'--disable-json'
。
没问题,我想,我只是使用pecl安装它:
# yum update php
# yum install php-pear
# yum install gcc
# pecl install json
# service httpd restart
成功,我认为应该这样做。但是php -m显示:
PHP警告:PHP启动:无法加载动态库'/usr/lib64/php/modules/json.so' - /usr/lib64/php/modules/json.so:未定义符号:ZVAL_DELREF in Unknown on line 0
道歉,如果这是一个愚蠢的问题,但有人知道这里发生了什么,你能指出我正确的方向如何解决这个问题,以便JSON开始工作?
非常感谢
答案 0 :(得分:4)
以为我会跟进解决方案。 PECL安装似乎与PHP 5.3.8冲突,所以经过一些研究和一些建议我玩弄了以下的想法:
# yum remove php
# yum install php
然而,经过进一步的建议后改为:
# yumdownloader php-common
# rpm -Uvh --force php-common*.rpm
# service httpd reload
# rm php-common*.rpm
这就是诀窍,JSON现在再次运作。希望这有助于其他人。
由于
答案 1 :(得分:2)
从PECL下载json-1.2.1.tgz
enter code heretar zxvf json-1.2.1.tgz
cd json-1.2.1
vi JSON_parser.c
查找ZVAL_DELREF
替换为Z_DELREF_P
(你可以在3个地方找到)
并保存文件
然后
phpize
./configure
make
make install
你可以得到你的json.so 别忘了添加到php.ini
答案 2 :(得分:1)
制作tmp和var / tmp exec
mount -v -o remount,exec /tmp
mount -v -o remount,exec /var/tmp
不要继续安装JSON
pecl install json
最后,再次制作tmp和var / tmp noexec
mount -v -o remount,noexec /tmp
mount -v -o remount,noexec /var/tmp