64位Red Hat 5.6使用yum升级PHP
最近给一台服务器升级PHP,默认安装的系统是RedHat Linux Enterpris(企业版)5.6, 自带的PHP是5.1.6,mysql是5.0.9,但安装最新的phpMyAdmin要求PHP最低都要5.2版本。所以要升级PHP
网上找了很多地方,终于找到一个捷径:使用yum升级PHP到最新版本。
众所周知,RedHat企业版不注册是不能使用YUM的。那么下面从网上摘抄的一段文章来帮你解决这个问题。
CentOS/RHEL 5.6的php版本默认为php-5.1.6,但是在php-5.2.9版本之前的php都存在一个漏洞,但是目前网上很多地方都无法使用yum update php*升级到新版本,经过多方的搜索资料,终于找到一种升级CentOS/RHEL 5.6的php到新版本的方法。
Centos上安装PHP一般来说有两种做法,要不通过wget下载安装文件,手动安装。要不通过源repo安装。
CentOS上的安装源有好几个(参加如下),官方的CentOS-Base.repo更新太迟缓,不太好用,比如官方的repo就没有php-sqlite的源。
一般来说,推荐使用REMI的源,更新快,文件充分。
下面的两个链接都是可以的,这里我用的是第一个链接下载的remi源的
(1)下载
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
或用下面的链接下载也行的
wget http://mirrors.yun-idc.com/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/el5.x86_64/remi-release-5-9.el5.remi.noarch.rpm
32位的如下:
wget http://mirrors.yun-idc.com/epel/5/i386/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-9.el5.remi.noarch.rpm
(1)安装
Ø安装之前可以先看一下这个两个包会安装哪些包及路径
Ø 安装下载好的remi源的两个包
rpm -Uvh epel-release-5-4.noarch.rpm
rpm -Uvh remi-release-5.rpm
这样就安装完这样就安装了Remi repository在你的系统上,RHEL5的用remi-release-5.rpm,RHEL6的用remi-release-6.rpm,其它地方一样。
Ø 然后需要编辑/etc/yum.repos.d/remi.repo
vi /etc/yum.repos.d/remi.repo
Ø 启用Remi Repository修改enabled=0为enabled=1。【只修改将[remi]中的enabled=0改成enabled=1来启用remi 源】
再在这个文件的最后增加一行:
priority=1
保存退出。
/etc/yum.repos.d/epel.re和/etc/yum.repos.d/epel-testing.repo这两个文件也按照上面的方法进行编辑!只在最后一行添加“priority=1”
#rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
#rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
(3)升级PHP到新版本
之后就可以升级php了。经过测试,如果单独升级php可能会提示失败,这样的话连同mysql一起升级就没问题了,所以我们必须执行以下命令才能升级php。记得安装后才用update。
yum --enablerepo=remi update php* mysql*
到现在为止php已经是5.4.17,mysql已经是5.5.32的了
(4)升级后可能的问题
无法启动mysql服务,切换到数据库的目录下
[root@utooo-anhui ~]# cd /var/lib/mysql/
在数据库的目录会生成一个错误的err文件
查看那个生成的err文件可以看到有提示下面的错误:
[ERROR] /usr/libexec/mysqld: unknown option '--skip-locking'
到配置文件里注释掉那个错误的选项
vi /etc/my.cnf
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port= 3306
socket= /var/lib/mysql/mysql.sock
#skip-locking//把这个前面加个“#”号或去掉
key_buffer = 384M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
max_connections = 1024
改完之后,就可以启动mysql的服务了。
推荐阅读: