删除旧版本php软链接,创建新版本软链接后,启动服务发现站点无法访问,依次检查mysql,nginx,php服务也都正常,查看日志也没有错误。再次检查php.ini,php-fpm.conf,www.conf配置文件也没发现有错误的配置。思考之后认为问题一定出在php与mysql的连接之上,可是又没有发现问题出在哪里。于是我开始翻看自己的知识库,翻看到一篇“关于localhost与127.0.0.1的区别”笔记,此时突然明白php.ini没有定义mysql.sock路径。定义mysqli.default_socket ,pdo_mysql.default_socket参数的mysql.sock路径后问题也迎刃而解。
- pdo_mysql.default_socket = /path/mysql.sock
- mysqli.default_socket = /path/mysql.sock
- mysql.default_socket = /path/mysql.sock #php7已经没有此参数了
需要注意的是有且同时满足以下两个条件时,是导致php无法连接数据库的原因:
- 站点连接数据库的php配置文件中,使用localhost来连接数据库。
- 修改了mysql的默认sock文件路径。
重点是为什么呢?那么我们需要了解mysql的两种连接方式。
第一:localhost与127.0.0.1有什么本质区别
localhost的意思是本地服务器;127.0.0.1是本机地址。
localhost数据是不经网卡传输的,这点很重要,它不受网络防火墙和网卡相关的的限制;而127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。
第二:mysql的连接方式
mysql -h localhost #通过sock连接
mysql -h 127.0.0.1 #通过TCP/IP连接
现在就可以解释php无法连接mysql数据库的原因了。
如果连接数据库的php配置文件中设置为localhost的情况下,并且修改了mysql的sock文件路径,而php-fpm默认就是使用mysql默认的sock文件路径,此时如果不通过参数指定新的sock文件路径,php-fpm从而无法连接数据库。
因此,此次故障另外一种解决办法就是:将localhost改为127.0.0.1来连接数据库。
那么为什么php没有错误日志呢?🤔
「 文章如果对你有帮助,请点个赞哦^^ 」 
若无特殊注明,文章均为本站原创或整理发布。
转载请注明本文地址:https://om.fangxiaoxiong.com/4289.html