原提示:连接 MySQL 失败: php_network_getaddresses: getaddrinfo failed: ?????????????????
上面是自己遇到的问题,做一个记录:
前阵子购买了一个云虚拟主机,便宜,买之前特意问了支持PHP
而还送了一个MYSQL数据库,查了一下是5.1的,当时觉得可能用不上。也就没上心。
用PHP的框架Laravel写了一个网站,写完想要挂上去的时候,出了大问题了。
1.首先是laravel是二级目录public为对外公开目录,可能是为了安全考虑,但放在虚拟主机里面就麻烦大了。
无法指向二级目录为默认首页,试了好几种方法,都以失败告终。比如什么.htaccess静态解析等,(这个没成,也可能是我设置或者用的不对)
反正不行。最后没办法。把index.php及public所有文件复制到了根目录了。静态的css和js等文件也都搬出来了。
虽然安全上可能会有隐患,只能是暂时这样用了。
2.接着虽然网站可以访问了,静态的页面也没有问题,但当访问到新闻的时候,出问题了。无法读取数据库内容,一开始以为写错密码啥的了,
不过也不可能啊。在本地测试好好的。线上就不用了呢?
开始和客服技术人员沟通,提交工单,提了整整4大片,无语了,最后还是没有解决。没法,自己测试吧。
3.先解决数据库问题,测试一下是不是数据有问题,正好买的时候送的一个MYSQL的库(后来才发现是5.1版本的)
就用这个测试一下,把数据导入进去。结果用navicat一连接,死活连接不上,坑呀。
又和客服沟通,就说没有问题。我这换了IP,也用命令行连接,就是不行。终于放弃了。
得出结论:这东西应该是不让外部人访问。
既然连不上,只好老老实实用后台提供的phpmyadmin了,虽然不熟,凑和着用吧。
前前后后导数据,导不进去,总是报错:SQLSTATE[42000]: Syntax error or access violation: 1115 Unknown character set: ‘utf8mb4‘ (SQL: select * from `teachers`)
后来搜了下,原来mysql5.1不支持utf8mb4,又把导出来的sql文件手工编辑了一下。终于导入成功了。
4.写了一个phpinfo的单独数据库连接代码,测试了一下。终于连接成功,拿到了数据。再改一下连接别的数据库,还是报错。
只能证明,虚拟主机的空间,只能用自己的数据库连接,外连,不行。
而里面的程序也只能连接自己的库。
自己的库只能用自己的后台里的phpmyadmin访问。别的访问也不行。
真坑。没办法,谁让便宜了。按人家的走吧。
(主要的是客服也没和我说呀,白浪费好长时间测试)
【解决】连接 MySQL 失败: php_network_getaddresses: getaddrinfo failed