首页 » 我的课程 » php » 正文

[菊花论]关于出现php -m和phpinfo不一致的问题

昨天有个学员私聊我,说他的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 一切正常了。

本次解决问题的结论是:

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

 

本文共 3 个回复

  • 匿名 2016/07/03 14:16

    自从跟上你的课,经常跑到国外的网站找答案了,不过效果很显著。 💡

    • shenyi 博主 2016/07/03 14:20

      @ GOOD.这才是正确的路子

  • 落叶黄了这世界 2017/07/13 16:50

    我再也不会忘记,有多个php版本的情况了。。。

发表评论