由来
今天在其他公司部署项目到服务器的时候遇到一个特基础的问题;尴尬的是我当时没想到解决方法。身为一个几年经验的攻城狮居然被这么一个基础的问题给秀到了,真是丢程序员的脸了。
问题
在部署环境时前面的路是一路坎坷(内网,服务器系统版本也很低),总算是坚持下来了。在部署代码的时候,curl
访问接口的时候报500的错误,很快就定位到PDO链接数据库的代码片段。当时链接不上一直以为是数据库的问题(数据库和接口是分开的两个服务器),但是通过命令行就可以直接链接mysql,所以只能看数据库的错误日志,可是找不到对应的错误日志,php也不报错,很多情况下没日志我就像无头苍蝇一样找不到方向不知道怎么搞了。
此时的我:焦急,心烦,抓耳挠腮。
到这里不知道有没有能想到怎么去解决的?
经过百度了一番,看到Exception
才恍然大悟,感觉自己真的脑残了。
解决
有了Exception
就能找到错误了啊,pdo在链接时如果链接失败会抛出异常,通过下面代码去捕获异常就好了。
try{
······
} catch(Exception $e) {
echo $e->getMessage();
}
捕获到 SQLSTATE[HY000] [2002] Permission denied
最后定位到时因为 selinux 工作模式开启了 enforcing
(强制模式)。
设置selinux工作模式为 permissive
(宽容模式) 问题就解决了:setenforce permissive
网友评论