说明
- 环境:
centos5.6-x64
php7.0.2
nginx - 需求
需要在服务器上安装sqlserver的扩展,捣鼓了近两天,php7版本的sqlserver扩展非常难安装,实在没法,被迫降级PHP版本,将PHP版本降级我php5.6.29。降级到该版本的原因是,发现该版本的PHP源码包里面,有mssql扩展的(该扩展在PHP7版本取消了)。
思路
- 直接源码安装php5.6,重新指定新的PHP安装目录,与已有的php区别开来
- 将现在服务器运行的php关闭,运行新安装的php版本
- 这样可以保证即使新安装的php版本有问题,也可以再次运行原有的php,不会导致无法修复的错误出现,便于回滚
安装
- 安装
- 在PHP官网下载php5.6.29版本
- 解压cd进去目录:
tar zxf php-5.6.2.tar.gz、cd php-5.6.2 - 一次性安装依赖库:
yum install gcc gcc-c++ libxml2 libxml2-devel libjpeg-devel libpng-devel freetype-devel openssl-devel libcurl-devel libmcrypt-devel - 执行安装过程:
./configure --prefix=/usr/local/php56 --enable-fpm --enable-pcntl --enable-mysqlnd --enable-opcache --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-shmop --enable-zip --enable-ftp --enable-soap --enable-xml --enable-mbstring --disable-rpath --disable-debug --disable-fileinfo --with-mysql --with-mysqli --with-pdo-mysql --with-pcre-regex --with-iconv --with-zlib --with-mcrypt --with-gd --with-openssl --with-mhash --with-xmlrpc --with-curl --with-imap-ssl make make install cp php.ini-production /usr/local/php/etc/php.ini
- 启动、重启、关闭
- php-fpm加入环境变量模式
cp /usr/local/src/php-5.6.29/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm #/usr/local/src/php-5.6.29是PHP安装文件夹 service php-fpm start #启动服务 service php-fpm stop #关闭服务 service php-fpm restart #重启 service php-fpm reload #重载 /*该命令执行,需要将php-fpm加入环境变量,执行上面的copy步骤*/- 直接执行、启动模式
启动:/usr/local/php56/sbin/php-fpm 关闭:ps aux | grep php-fpm #执行该命令,找到php-fpm的pid直接kill掉即可
遇到问题
- make 报错:...is not a valid libtool object
该错误是在运行configure和make的时候,遇到错误就导致了该问题
解决办法:make clean 之后在make即可
- 重启php-fpm出错
killapp php-fpm 再次重启即可
- 安装完成之后,运行成功,没有问题,但是访问PHP时候报错(没有错误描述,感觉就像是PHP完全没有解析)
是因为php-fpm.conf中user、group的问题,只需要将用户、用户组改为web账号,用户组重启php-fpm即可
- 安装之后运行redis失败
因为在redis等其他按软件安装的时候,只要基于:php-config-path参数的软件安装,都要重新编译一次