今晚我在使用YAF框架的时候,遇到了一个问题:命令行下可以跑YAF框架的入口文件,但是通过浏览器却不能跑?
这个问题折腾了我一晚上,好在一个群友慢慢帮我分析了一波,非常感谢!
原因是:我的FPM并没有使用yaf.so,但是CLI使用了yaf.so。
那么为什么会出现这种情况呢?因为命令行和PHP-FPM是两个不同的SAPI,它们可以加载不同路径下的php.ini文件。
而通过:
1 | php php文件名 |
这种方式是使用CLI这个SAPI。
通过:
1 | http://localhost/index.php |
这种方式使用的是FPM这种SAPI。
那么我们如何查看CLI模式下添加了哪些扩展呢?使用:
1 | php -m |
而在PHP脚本中使用如下函数:
1 |
|
则可以查看PHP-FPM添加了哪些扩展。
我放错误的原因主要是我一直以为CLI和FPM一定共用同一个php.ini文件,其实不一定,这是在编译PHP源代码的时候可以指定的。
emmm,希望可以帮助到大家。
基础真的很重要……
happy ending……