关于出现php-m和phpinfo不一致的问题

我前半生最强烈三次心跳,分别发生在上课被老师点名 ,下楼梯一脚踩空, 和你对我微笑的时候!
### 本文系转载
1
2
3
命令查看:
php -m
which php
昨天有个学员私聊我,说他的`php -m`和在`apache` 中运行`phpinfo`不一致(这力默认`apache`是把`php`编译成模块的),譬如模块加载不一致。

理论上这是不可能的。除非你的PHP做了特别的设置(此处不表,-c参数即可搞定), 默认情况下,两者都是一致的。

经过我一番询问,发现并没有特别之处。于是我也纳闷了、抑郁了、纠结了。这也引起了我的“执着心”,我很讨厌在这种问题上还能卡住。于是我告诉那位学员,今天不找出原因咱两一起“切腹”。学员弱弱的答应了。。。。

然而,经过我一步步询问确认(注意:我不帮学员远程调试,这是游戏规则)。终于发现了问题。接下来放出原因,大家可能也会碰到

1、学员执行的是php -m .并不是类似 /usr/local/php/bin/php -m 这说明他的PHP存在于某个环境变量路径里。

2、也就是恰恰上面这个原因给忽略了。我们一直始终认为 他的环境变量是正确的。

3、最后,我让他执行了 重新编译PHP。问题依旧。(此时学员已经有切腹的愿望)

4、最后,我让它(就是它)执行了 which php .这时发现它的PHP在 /usr/bin 里面。

5、也就是说不管他怎么编译PHP,最终执行的php -m 的那个PHP可执行程序 永远是定位在 /usr/bin里面的那个老PHP

6、学员已经忘了怎么操作使之 /usr/bin里也有个PHP

7、解决方法如下:删掉 /usr/bin里面的那个老PHP 。把环境变量 设置到/usr/local/php/bin里。

8、再次执行 php -m 一切正常了。

本次解决问题的结论是:

不要相信一些“你认为不可能出错的步骤”。往往有的步骤你觉得“绝对不可能出错”,而问题恰恰就在你最信任的步骤里。 交朋友也是,往往你最最信任的人也是最有可能在关键部分干你一菊花的人。

http://www.hishenyi.com/archives/1095