php扩展在全局变量中不存在但是打印phpinfo却存在?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php扩展在全局变量中不存在但是打印phpinfo却存在?相关的知识,希望对你有一定的参考价值。
参考技术A 说明:我本地装的php集成环境MAMP PRO最近遇到一个比较奇怪的问题,在本地搭建了PHP运行环境,并且安装了相应的PHP扩展 并且在测试页面中通过打印phpinfo能看到所安装的扩展是正常的,但是php -m | grep swoole 没有显示swoole 已经配好了php环境变量
装好了php,php一些常用的扩展后就开始配置php系统环境变量,因为我用的mac book pro 所以配置命令如下
查看环境变量是否OK
以为一切OK的我想试试swoole的性能是否真有官网说的那么厉害于是就准备了一段测试脚本 https://wiki.swoole.com/wiki/page/326.html
测试脚本
终端执行
然后奇怪的是swoole的http服务并没有起来 ????
然后查看php错误日志 惊奇!
确定浏览器打印的phpinfo 是有swoole扩展的,而且终端的php跟界面的php是同一个版本的php 百思不解 然后我在终端
结果很意外 终端里面找不到swoole 扩展!!! 可是浏览器里打印有的啊 而且是同一个PHP版本??奇怪了
然后在终端执行 php -i 这个是在终端打印phpinfo
然后对比这个
终端打印phpinfo
浏览器打印phpinfo
是同一个PHP没错了 。。。
然后再对比php.ini引用路径
终端的:
浏览器的
终于找到原因了 两个地方引用的php.ini不一样 于是在终端引用的php.ini同样加上extension = swoole.so即可
解决修改 Linux 下的 PHP 环境变量不生效的方法
这个问题出现服务器有多个 PHP 版本,php -v
和phpinfo()
显示两个不同的版本
最近真的,都给朋友解决问题了。。。
phpinfo
查看的 php 版本是 7.2.6,到 bash 去使用php -v
查看的确是 5.4.2
直接上手先改环境变量,全局永久生效的那种~
vi /etc/profile
在最后加入对应的 PHP 路径
export PATH=$PATH:/usr/local/php/bin
保存,然后让配置生效
source /etc/profile
使用php -v
查看还是 5.4.2 的版本,环境变量还是指向旧的,没生效
这样,先查一下对应的 php.ini,使用命令,查到有 3 个 php.ini
$ find / -name php.ini
/usr/local/php/etc/php.ini
/usr/local/php7.0/etc/php.ini
/etc/php.ini
然后使用命令查看 PHP 加载的是哪个配置文件,这个获取的是系统内的 php.ini 的位置,不是 Apache 或者 Nginx 加载的 php.ini 文件
$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
查找一下系统里的 PHP 相关目录
$ find / -name php
可以看到有一个/usr/bin/php
这个应该是服务器默认安装的 PHP
ok,使用命令删掉/usr/bin/php
文件夹
rm -rf /usr/bin/php
别滥用,别敲错,回车
再让配置生效一下
source /etc/profile
这样,在 Bash 里查看的 PHP 版本也就是使用phpinfo()
查看的版本了
php运行版本位置
以上是关于php扩展在全局变量中不存在但是打印phpinfo却存在?的主要内容,如果未能解决你的问题,请参考以下文章
linux 系统 解决php -v查看到版本于phpinfo()打印的版本不一致问题
php memcache 扩展 php -m 与 phpinfo() 不同
PHP XML (DOM) 扩展:已安装但未在 centos 的 phpinfo 中列出