将 Centos 5 升级到 PHP 5.2 或 5.3 [推荐方式?]

sol*_*sol 4 php5 centos5

我们使用 Zend Framework,在版本 2 中,php 5.2 将是最低要求。我们喜欢 CentOS 并希望继续使用它,但是在使用 Zend 框架开发 Web 应用程序时,PHP 5.1 将不再适用。

我找到了几个指向使用外部存储库升级的解决方案的链接。

在 CentOS 5.4 上将 PHP 5.1.6 升级到 5.2.x 的推荐方法

http://www.webtatic.com/blog/2009/05/installing-php-526-on-centos-5/

http://www.webtatic.com/blog/2009/06/php-530-on-centos-5/

我们希望看到另一种使用“官方”的解决方案?CentOS 存储库(如果有)。

我们只需要升级 PHP,其余的 CentOS 设置就可以了。对我们来说,重要的是使用普通存储库保持 YUM 循环完整。

简而言之:甚至可以通过使用外部存储库或其他方式仅升级 PHP 吗?虽然仍然通过正常的 yum 使用安全地升级我们所有的其他软件包?

谢谢你的帮助!

hob*_*ave 9

我希望在被问到这个问题时我会看到这个问题。您应该非常有选择性地从中安装软件包的第 3 方存储库。许多不遵循打包最佳实践,并且大多数不确保不冲突的包名称。你很容易把你的系统弄得一团糟。针对这个最近的问题,我给出了以下答案。


我强烈建议使用IUS 社区项目存储库来升级您的 PHP 5.2,甚至 CentOS 5 上的 PHP 5.3 软件包。这些是一组维护良好且高质量的软件包,由Rackspace 使用并维护,但不受他们的支持(除非你当然是客户)。

如果您不熟悉安装说明,可能会有点难以找到。您正在他们的 wiki 上寻找客户端使用指南。为了便于使用,我将复制此处的说明。

[root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1.0-6.ius.el5.noarch.rpm 

[root@linuxbox ~]# wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm

[root@linuxbox ~]# rpm -Uvh ius-release*.rpm epel-release*.rpm
Run Code Online (Sandbox Code Playgroud)

这将为您下载并安装EPEL和 IUS 存储库。

IUS 承诺不会在任何官方存储库中使用冲突的包名称,包括 EPEL(这是一件好事),事情并不像yum upgrade php. 您需要先卸载所有现有的 PHP 软件包,然后从 IUS 安装相应的软件包。或者,您可以使用该yum-plugin-replace插件向 YUM 添加有用的“替换”功能。


手动

第一的:

[root@linuxbox ~]# rpm -qa | grep php

[root@linuxbox ~]# yum erase php
Run Code Online (Sandbox Code Playgroud)
  • rpm -qa | grep php列出每个已安装的 PHP 包。您将使用此列表从 IUS 安装所有适当的单独 PHP 包
  • yum erase php 命令只是擦除 PHP 及其依赖包

最后:

[root@linuxbox ~]# yum search php52

[root@linuxbox ~]# yum install php52 php52-common php52-pecl-apc php52-mysql ...
Run Code Online (Sandbox Code Playgroud)
  • yum search php52 列出可用的 PHP 5.2 包
  • yum install安装您选择的 PHP 5.2 软件包。您将使用在第一步中获得的列表来确定您需要哪些

百胜插件替换

[root@linuxbox ~]# yum install yum-plugin-replace

[root@linuxbox ~]# yum replace php --replace-with php52
Run Code Online (Sandbox Code Playgroud)

这将神奇地确定要删除哪些 PHP 包,以及要为您安装哪些匹配的 php52 包。