如题,这个问题困扰了我好久。。。

        昨天在新阿里服务器(CentOS系统)安装LAMP,在上面把之前做好的一个网站拉上去。打开却出现如题的问题!

SQLSTATE[HY000] [1045].png

        根据英文提示,应该是数据库root用户使用密码,却访问被拒绝,一般出现在密码错误之类的。但是我核了再核,密码是正常的。

        于是有点怀疑搭建的网站LAMP程序有问题,但是安装PHPWIND却没问题,PHPMYADMIN也没问题,这是什么情况呢。。。

        于是百度,一堆度娘说什么重新设置MYSQL的密码,重启服务器,kill掉MYSQL进程等等。然并卵,无卵用!

        中午还重装了LAMP,装成和之前买的服务器装的一模一样的版本,然后呢,将代码放到之前的阿里云服务器运行是OK的!

        怀疑是LAMP的配置问题。回到宿舍后,重装了LAMP,然后将之前的阿里云的LAMP的my.cnf、httpd.conf、php.ini都复制到新装的LAMP中,重启MySQL、Apache等。结果呢,然并卵,打开还是老样子。

        搞到今晚,怀疑是ThinkPHP3.2.3版本有问题,是否版本太高了?还根据提示,到Think/Db/Driver.class.php里面去修改核心代码,还找到问题出错是执行到这一行:$this->linkID[$linkNum] = new PDO( $config['dsn'], $config['username'], $config['password'],$this->options);。我还将这个$config打印出来看,发现里面的$config['username']、$config['password']都正常无误。什么情况啊!

ThinkPHP出错记录.jpg

        于是装了个OneThink,因为OneThink也是用ThinkPHP3.2.3版本, OneThink装完后运行正常!!!然后傻傻的将OneThink里面的ThinkPHP替换出错的程序的ThinkPHP,再打开呢,还是老样子啊!

        最后只好怀疑自己写的代码了。。。

        但是,这个代码在两个WIN系统服务器一个阿里CentOS服务器运行都正常,也没改过。。。

        检查还真的检查出小问题来,CentOS是区分大小写的,然后我的代码里面的Css和css不分,Js和js也是这样,就改这两个。理论上也至于影响到读取数据库啊!还有就是有的代码继承Commoncontroller,又写上use Think\Controller,属于多此一举。

不需要继承Think Controller.png

        删除代码,将小问题改好,数据库也删了重建,再把代码重新上传回去,用chmod将Runtime目录改为777属性权限。再打开,正常了!!!

        至今还是想不明白为啥这个样子,代码程序是uppic,帮朋友写的,跟他说莫名其妙OK了,估计心也不踏实。。。