记录一次PHP升级遇到的问题

  • Post author:
  • Post category:PHP
  • Page Views 1588 阅读

删除旧版本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没有错误日志呢?🤔


「 文章如果对你有帮助,请点个赞哦^^ 」 

5+