PHP5.6.40,7.0,7.1 版本安装部署踩过的坑分享

一 服务器OS和MYSQL,NGINX版本如下:

centos 7.2

mysql5.7 

nginx1.15

php7.0

二  php7.0 安装

centos,mysql nginx 安装省略

主要说 php安装 

A 首先安装的通过yum install(默认安装目录,使用tar包安装,安装后的各个文件路径不同而已,这里不赘述) 安装后发现 连接不了数据库缺少驱动,现象 could not find driver,查看库文件默认目录/usr/lib64/php/modules 没有pdo-mysql.so, 然后使用 php-m 命令查看 pdo-mysql.so 是否加载了,再然后没有加载这个库文件(库文件中没有,pdo-mysql.so 一般都不可能加载的)。

B 试了好多方法 说再yum install pdo pdo-mysql php-pdo 修改php.ini 等,无果。最后下载 wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 

然后解压
tar -zxvf PDO_MYSQL-1.0.2.tgz

进入解压后的目录 cd PDO_MYSQL-1.0.2,然后执行php 命令 phpize,如果 报错,没装什么就使用yum安装什么就行了。

ok 后 再执行 ./configure --with-php-config=/usr/local/bin/php-config --with-pdo-mysql=/usr/local/mysql/ 

第一个--with 是 /usr/local/bin/php-config

第二个--with 是mysql安装路径

执行完成,make编译一下,没问题继续make install 完成,会生成一个文件夹,里面有pdo_mysql.so这就是我们要的东西。

问题就出来 make 编译时候 报各种错误 ,说一些方法缺失参数等,兼容性问题,除非修改c++ 源码了。经过多次折腾无果。放弃改做法。

C 安装 php5.7.40 发现又缺少gd.so  图像处理库文件 ,现象是图形验证码显示不了。经过折腾最后也放弃了。

D 最后安装的 php7.0 在朋友的一再鼓励下安装并且给了指导。安装过程如下:

1 使用以下命令将yum仓库包升级更换成PHP7的rpm包。

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

PHP5.6.40,7.0,7.1 版本安装部署踩过的坑分享_第1张图片

2 先使用yum命令安装基本PHP组件,以后要用到啥再安装啥。

yum -y install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64

PHP5.6.40,7.0,7.1 版本安装部署踩过的坑分享_第2张图片

再安装PHP-fpm(进程管理器,提供PHP进程管理方式,可以有效控制内存和进程、平滑重载PHP配置)

yum -y install php70w-fpm php70w-opcache

安装完之后启动php-fpm

systemctl start php-fpm

查看版本以检测是否安装成功 php-v

E 检测PHP是否能与Nginx互通

详看参考 php7.0 安装,该步骤没有遇到坑。

F 检测PHP是否能与mysql互通 (坑在此)

详看参考 php7.0 安装 遇到了坑,并且也没有报错 重启 php-fpm 和nginx 服务 还是连不上数据库 然后通过 php -i 或者 php -v 发现警告信息 如下 :

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysqli.so' 
- /usr/lib64/php/modules/mysqli.so: symbol mysql_change_user, 
version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_mysql.so' 
- /usr/lib64/php/modules/pdo_mysql.so: symbol mysql_options, version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference in Unknown on line 0
PHP 7.0.33 (cli) (built: Dec  6 2018 22:30:44) ( NTS )

网上找了很久无果 最后都绝望了 包括朋友也是 ,再然后 我抱着试一试的态度 百度搜索了 mysql_options, version libmysqlclient_18 not defined in file libmysqlclient.so.18 看到一篇文章

重新安装mysql 库

yum install mysql-libs -y

然后 再 php -v 没有警告了 并且能连上数据库了。

三 总结

1 php和php-fpm 安装 需要一些库文件 很可能 就没有安装到位,并且各种奇怪的错误,需要冷静,不放弃,多尝试。

2 php ,php-fpm ,nginx ,mysql 版本繁多,最好使用常用文档版本不要一味追逐最新版本,可能不兼容等导致采坑不断。

3 使用docker 安装

4 遇到这类问题最好找熟悉的朋友同事给予积极指导等。

 

备注

1 php7.0 安装 https://www.cnblogs.com/pandawan/p/11100311.html

2 https://blog.csdn.net/weixin_34174322/article/details/91958876

3 docker 安装 nignx+php7.3+mysql 环境搭建链接:

http://note.youdao.com/noteshare?id=7a3d1b4ab11ba81f722f9a73cc39db91&sub=2C11979406534A0A812367F70AE25AA7

 

你可能感兴趣的:(linux服务器运维,数据库事务)