分类存档: PHP

Linux软件的使用顺序问题

前阵子被某诡异错误纠缠一天,解决了才发现如此简单,又一个被表象蒙蔽的实例。

nginx+php,直接访问浏览器功能正常,页面上通过接口调用后台shell运行php内容则报错找不到数据库,直接后台用php运行shell文件则没问题,修改为nginx用户运行也没问题,运行php -m查看模块加载正常。

开始怀疑是数据库的问题,因为刚出现过因为数据库版本对应不上而编译后无法使用的“段错误”问题,于是又重新编译等等花费不少时间。

中间其他的各种尝试和搜索不说了,最后取得进展的是在浏览器调用shell并输出phpinfo的时候发现参数内容和编译安装的版本对不上,终于发现是原来使用默认配置安装的一份php在作祟(由于版本号一致,一直没有看出来),之后删除除了制定路径的php之外的所有php相关文件,问题解决。

问题原因就是系统的环境设置和用户的环境设置的优先级并不一致,如果是用户的环境则优先使用/usr/bin下的软链接掉用目标php,如果是系统环境则会优先其他路径导致默认安装的php优先权更高,删除之后则继续寻找到/usr/bin下的php。