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 -vphpinfo()显示两个不同的版本

最近真的,都给朋友解决问题了。。。

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() 不同

在 phpinfo() 输出中公开扩展版本

PHP XML (DOM) 扩展:已安装但未在 centos 的 phpinfo 中列出

linux centos nginx php-fpm 相加php扩展,才发现php.ini在phpinfo里没有

CentOS7为php7.2安装php-redis扩展(redis环境搭建二)