我正在尝试升级 php5.1.6到5.2.1. 调用yum 更新 php我收到此消息:
--> 已完成依赖关系解决 php-eaccelerator-5.1.6_0.9.5.2-4.el5.rf.x86_64 安装时存在依赖解决问题
--> 缺少依赖项:软件包 php-eaccelerator-5.1.6_0.9.5.2-4.el5.rf.x86_64 (installed) 需要 php = 5.1.6 错误:缺少依赖项:软件包 php-eaccelerator-5.1.6_0.9.5.2-4.el5.rf.x86_64 (installed) 需要 php = 5.1.6 您可以尝试使用 --skip-broken 来解决此问题您可以尝试运行:package-cleanup --problems package-cleanup --dupes rpm -Va --nofiles --nodigest
在 yum-utils 包中可以找到程序 package-cleanup。
消息给出了说明,但我真的不知道该怎么做。这是一台生产服务器,停机时间不能超过 1 分钟。
感谢您的任何想法。
我只需要 PHP 5.2.1 即可使用新的 json_decode() 函数。我添加了这个,升级就不再需要了:http://snipplr.com/view/4964/emulate-php-5-for-backwards-compatibility/
答案1
RPMforge repo 没有针对 php 5.2.1 构建的 php-eaccelerator 版本。
事实上,最新版本是 5.1.6。请参阅http://packages.sw.be/php-eaccelerator/
您的选择:
- 不要更新 php。
- 尝试针对 php 5.2.1 重建 php-eaccelerator RPM。如果您不习惯编辑 rpm 规范文件和从源代码编译,则不应尝试此操作。
- 寻找为 php 5.2.1 构建的 php-eaccelerator RPMhttp://www.atoomnet.net/centos_updated_php.php可能会有效,但我无法证明其质量。
更大层面的问题:
- 为什么要升级到不是最新版本的 php 版本(远非最新版本)?这是 CentOS/RHEL 存储库中的最新版本吗?
- 为什么你的环境被设计成这台服务器不能停机超过 1 分钟?这很糟糕。
答案2
对于 PHP 5.1,json 扩展可通过 pecl 获得。无需为此升级 PHP(尽管现在 PHP 5.1 和 5.2 都已过时)
您需要安装 php-devel 和 php-pear:
yum install php-devel php-pear
然后:
pecl install json
echo "extension=json.so" > /etc/php.d/json.ini
但是,由于您已经升级了 PHP,最简单的方法可能是自己编译 eAccelerator(无法通过 pecl 使用):
http://eaccelerator.net/wiki/InstallFromSource
或者切换到为已安装的 PHP 版本提供 eAccelerator rpm 的存储库。我提供适用于 PHP 5.3 的 eaccelerator,以及 PHP 5.3 本身(如果您需要)。但我不提供适用于 PHP 5.2 的 eaccelerator。
http://www.webtatic.com/blog/2009/06/php-530-on-centos-5/
然后
yum install php-eaccelerator --enablerepo=webtatic