如何使用yum升级到CentOS中的最新PHP版本?


22

我找到了一些有关此的博客文章,但是它缺少可能的副作用的描述。

我真的可以在这些步骤上使用一些详细信息:

  1. 如何在yum中添加提供PHP 5.4的仓库
  2. 这可以无缝替换CentOS中的当前PHP版本吗?
  3. 当它支持PHP 5.4时,如何切换回官方仓库?(我系统中当前的5.3.3)
  4. 是否有可能破坏我当前使用的PHP模块?

注意

人们成功使用相同的方法在较新版本上进行了升级,并建议在问题中删除特定版本。虽然最好固定版本,以防新版本实际上破坏了某些功能,但我想保留社区建议的最新成功版本作为注释。

如果您已经成功升级到其他版本,请随时进行更新。

  • PHP版本:5.4、5.5、5.6
  • CentOS版本:5、6

Answers:


19

我按照Fedora 17/16,CentOS / RHEL 6.3 / 5.8上的Install Apache / PHP 5.4.10的说明进行了一些修改。大概花了10分钟。我的确切命令如下所示。请注意,第一个命令必须与本文中显示的内容进行更改。更改是从epel-release-6-7.noarch.rpmepel-release-6-8.noarch.rpm

  1. 如何在yum中添加提供PHP 5.4的仓库?

    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
    yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm
    
  2. 这样可以无缝替换CentOS中的当前PHP版本吗?对我来说,以下命令有效,而且现有的PHP网页均未损坏。你的旅费可能会改变。

    yum --enablerepo=remi install httpd php php-common
    yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    service httpd restart
    
  3. 当它支持PHP5.4时,如何切换回官方仓库?我尚未测试从CentOS储存库中删除并重新安装PHP的命令,但这些命令应该可以工作。

    # Remove the Remi packages. Note the reversed command order
    yum remove php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    yum  remove httpd php php-common
    # Install the CentOS packages. 
    yum install httpd php php-common
    yum install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml
    
  4. 是否有可能破坏我目前使用的PHP模块?是。使用使用Zend安装程序安装Zend的最新版本的CentOS(6.2?),上述升级破坏了Zend。

以上所有命令均以方式运行root。最佳做法是以非特权用户身份登录并使用sudo。(这是具有当前快照的开发VM ...)

另外,不要默认启用Remi存储库-过去,我很聪明,默认情况下启用了Remi存储库,即使使用存储库优先级,事情也坏了。


3
雷米经常使事情变得丑陋。我更喜欢将iuscommunity存储库用于最新的php。另一种方法是使用Zend服务器存储库,但对我来说似乎有点开销。
Kazimieras Aliulis

1
@KazimierasAliulis不幸的是,IUS回购通过使用不兼容的程序包和文件名来引起依赖地狱。我不建议使用它。
迈克尔·汉普顿

非常详尽的描述。由于我没有与Zend引擎相关的代码,因此我的情况无关紧要,对吧?
2013年

1
我使用@MichaelHampton yum --enablerepo=remi update,它可以处理所有相关的php包,看起来是一个更好的解决方案。该服务器运行几天以来一直没有问题,感谢所有信息。
2013年

1
注意:那个家伙忘了添加php到安装列表中,这导致了很多问题,因为apache没有提供php文件,因此使用时请不要忘记添加它
eric.itzhak

9

对Webtatic其他答案的改进:

1。使用http://www.webtatic.com/packages/php54/上的指南:

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

2。您首先需要查看哪些现有已安装的软件包需要替换,可以通过使用yum shell结合在一个事务中删除php-common和php54w-common来完成(这样就不会删除共享依赖项)

yum shell
> remove php-common
> install php54w-common
> run
…
Is this ok [y/N]: n

不要对结果说“ y”,但要注意“删除依赖项”中提到的所有软件包,例如

Removing for dependencies:
 php
 php-cli
 php-pear
 php-pecl-memcache
 php-mysql

如果此列表中除php *之外还有其他软件包,那么您将无法无缝切换到Webtatic PHP 5.4,但是必须研究替代方法。Webtatic为所有基本php软件包提供了替换软件包(请参阅链接至1.的页面上列出的软件包以进行确认),因此应该没有问题,除非您使用安装了依赖于特定php版本的软件包的其他第三方存储库已安装。

对于其余的安装(仍在yum shell中),只需删除以下软件包并安装它们的php54w- *副本:

> remove php-common php php-cli php-pear php-pecl-memcache php-mysql
> install php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> run
…
Is this ok [y/N]: y

然后,您应该只在列表中看到已设置为要删除并安装的软件包,并且可以确认安装要切换。当前正在加载php的任何服务都需要重新启动,例如httpd或php-fpm。

至于“无缝”,在用户能够访问网站的同时进行的任何软件更改都应充分理解其后果。在尚未加载进程的情况下删除和添加共享库时,可能会在共享库不存在时加载它们。最好像这样离线进行软件升级,最好先在非生产机器上进行测试,以验证过程是否按预期进行。

3。要切换到假设的CentOS基本php54软件包(CentOS 5使用php53前缀),您只需运行上述步骤,即可用php54w删除替换php删除,并用php54安装替换php54w的安装,例如

yum shell
> remove php54w-common
> install php54-common
> run
…
Is this ok [y/N]: n
…
> remove php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> install php54-common php54 php54-cli php54-pear php54-pecl-memcache php54-mysql
> run
Is this ok [y/N]: y

但是,关于切换到假设的基本php54的问题,某些软件包可能没有替代品(例如,CentOS 5中没有php53-pecl-memcache扩展名),而Webtatic的软件包在CentOS基础中不可用(例如php54w) -pecl-zendopcache)。如果缺少它们,那么除了直接使用pecl来安装它们之外,您通常没有其他选择。

4。任何PHP升级都可能引入错误,并且网站应该重新测试。这不是Webtatic特有的,而是新功能引入新错误的一般想法。

与接受的答案中Remi的存储库不同,Webtatic EL6存储库从不使用与CentOS基本存储库相同的软件包名称,因此不会覆盖您不打算切换到的软件包的安装/升级,因此默认情况下处于启用状态。

免责声明:我是Webtatic的所有者/维护者


yum shell方法确实非常适合依赖关系观察,谢谢。
2013年

@Andy,非常详细地写了,谢谢。如何在CentOS 6中将PHP的默认cli(仅cli)更改为5.4?
盖亚2015年

0

您可以在此处找到yum安装的php 5.4.9:

http://www.webtatic.com/packages/php54/

您可以执行“ rpm -qa | grep php”以查看当前所有的php软件包,并执行“ rpm -e”以将其删除。我不知道您当前使用的模块,但是在升级之前值得测试。


您有点回答1.关于服务器维护,不仅仅是安装它并运行测试,我真的可以在做任何事情之前使用更多信息。
Vicary
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.