【问题标题】:PHP 5.3.8, JSON & CentOS 6PHP 5.3.8、JSON 和 CentOS 6
【发布时间】:2011-12-20 06:15:14
【问题描述】:

我们正在运行 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 0

抱歉,如果这是一个愚蠢的问题,但有谁知道这里发生了什么,您能否指出正确的方向来解决这个问题,以便 JSON 开始工作?

非常感谢

【问题讨论】:

  • 您是否考虑过启用 JSON 重新编译 PHP?明确禁用它没有多大意义,因为它是一个核心模块。
  • 你好 Rudi,那么命令行 PHP 与 mod_php 有什么不同吗?两者似乎都在运行相同版本的 PHP,尽管一个具有 --enable-json=shared 和另一个 --disable-json。不确定那是什么意思。我以前没有重新编译过 PHP,也不想破坏任何东西(它是一个实时服务器)。如果我只想删除“--disable-json”标志,重新编译容易吗?

标签: php json apache centos centos6


【解决方案1】:

我想我会跟进解决方案。 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 现在又可以工作了。希望这对其他人有帮助。

谢谢

【讨论】:

  • 这确实有效。耶。但我需要#pecl install json 然后取消注释 php.d/json.ini 中的扩展名
【解决方案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

【讨论】:

【解决方案3】:
  1. 登录 SSH
  2. 制作 tmp 和 var/tmp exec

    mount -v -o remount,exec /tmp
    mount -v -o remount,exec /var/tmp

  3. 不安装 JSON

    pecl install json

  4. 最后,再次使 tmp 和 var/tmp noexec

    mount -v -o remount,noexec /tmp
    mount -v -o remount,noexec /var/tmp

【讨论】:

  • SSH 进入什么?鉴于问题的上下文,这个答案没有什么意义。
  • 同意 Axle,这没什么意义。为什么需要挂载?正在安装什么?
猜你喜欢
  • 2013-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
相关资源
最近更新 更多