最近管理一台服务器,默认安装的系统是RedHat Linux Enterpris(企业版)5.5,自带的PHP是5.1.6,但安装最新的phpMyAdmin要求PHP最低都要5.2版本。无奈乎,只能升级。下载5.3.8版本的tar.gz包编译安装,每次都提示失败,错误提示如下。
/data/php-5.3.8/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f /usr/local/php/bin/phar.phar /usr/local/php/bin/phar
网上找了很多地方,终于找到一个捷径:使用yum升级PHP到最新版本。
众所周知,RedHat企业版不注册是不能使用YUM的。那么下面网上摘抄的一段文章来帮你解决这个问题。
CentOS/RHEL 5.5的php版本默认为php-5.1.6,但是在php-5.2.9版本之前的php都存在一个漏洞,但是目前网上很多地方都无法使用yum update php*升级到新版本,经过多方的搜索资料,终于找到一种升级CentOS/RHEL 5.5的php到新版本的方法。
(1)下载
(2)安裝
rpm -Uvh epel-release-5-4.noarch.rpm
rpm -Uvh remi-release-5.rpm
这样就安装了 Remi repository 在你的系统上,RHEL4的用remi-release-4.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。再在这个文件的最后增加一行:
priority=1
保存退出。
/etc/yum.repos.d/epel.repo和/etc/yum.repos.d/epel-testing.repo这两个文件也按照上面的方法进行编辑!
(3)升级php到新版本
之后就可以升级php了。经过测试,如果单独升级php可能会提示失败,这样的话连同mysql一起升级就没问题了,所以我们必须执行以下命令才能升级php。记得安装后才用update,否则用install,用过YUM的人应该都懂的。
yum --enablerepo=remi update php* mysql*
到现在为止PHP已经是5.3.8了。运行phpMyAdmin3.4.4时候,提示没有mcrypt扩展。使用yum install mcrypt* libmcrypt未果,只得手动安装。进入到刚才下载的PHP5.3.8解压目录中的扩展目录/ext/mcrypt/中,依次执行
./configure, make, make install
三个指令,提示configure: error: mcrypt.h not found. Please reinstall libmcrypt,大致意思是你没有编译libmcrypt,我们只好先手动编译libmcrypt。 到这里ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/下载libmcrypt-2.5.7.tar.gz,编译很简单,依旧是configure,make,make check,make install。之后重新编译mcrypt,这次没提示错误了。编译成功之后会生成/usr/lib/php/modules/mcrypt.so扩展文件。再之后添加extension=mcrypt.so 到php.ini中即可。重启apache后就会生效。
升级后可能的问题
无法启动MYSQL服务,初始化MYSQL数据库,执行如下命令:
/usr/bin/mysql_install_db --user=mysql
启动时若出现类似下面错误代码:
[ERROR] Error message file '/usr/share/mysql/english/errmsg.sys' had only 480
error messages,
but it should contain at least 714 error messages.
Check that the above file is the right version for this program!
......
下载RPM包并解压,解压并用里面对应位置的errmsg.sys覆盖系统中对应的文件。
wget http://mysql.ntu.edu.tw/Downloads/MySQL-5.5/MySQL-server-5.5.16-1.linux2.6.x86_64.rpm
rpm2cpio MySQL-server-5.5.16-1.linux2.6.x86_64.rpm | cpio --extract --make-directories
cp ./usr/share/mysql/english/errmsg.sys /usr/share/mysql/english/errmsg.sys
如果出现以下错误代码:
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting
[Note] /usr/libexec/mysqld: Shutdown complete
mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
修改MYSQL的默认引擎为MYISAM
修改 default-storage-engine=INNODB 为 default-storage-engine=MYISAM
当然,这里如果你必须要用到INNODB引擎,就更改对应的INNODB参数设置,怎么改请求助于谷歌大师。
最后重置MYSQL密码:
mysqladmin -h 127.0.0.1 -u root -p password 123456
启用MYSQL成功,用phpMyAdmin连接数据库提示2002错误,修改phpMyAdmin配置文件config.inc.php中的下面参数即可:
修改 $cfg['Servers'][$i]['host'] = 'localhost'; 为 $cfg['Servers'][$i]['host'] = '127.0.0.1';