一 服务器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
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
再安装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