说明:我本地装的php集成环境MAMP PRO
最近遇到一个比较奇怪的问题,在本地搭建了PHP运行环境,并且安装了相应的PHP扩展 并且在测试页面中通过打印phpinfo能看到所安装的扩展是正常的,但是php -m | grep swoole 没有显示swoole 已经配好了php环境变量
5CCE9A15-4782-47BA-AF44-0E1D23EAF981.png
装好了php,php一些常用的扩展后就开始配置php系统环境变量,因为我用的mac book pro 所以配置命令如下
$ echo "export PATH="/Applications/MAMP/bin/php/php7.1.22/bin:$PATH"" >> .bash_profile
$ source ~/.bash_profile
查看环境变量是否OK
$ php -v
PHP 7.1.22 (cli) (built: Oct 9 2018 14:54:55) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
以为一切OK的我想试试swoole的性能是否真有官网说的那么厉害于是就准备了一段测试脚本 https://wiki.swoole.com/wiki/page/326.html
测试脚本
$http = new Swoole\Http\Server("127.0.0.1", 9501);
$http->on('request', function ($request, $response) {
$response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});
$http->start();
终端执行
$ php test.php #开始swoole的http服务
$ lsof -i:9501 #查看swoole的http服务是否开启
然后奇怪的是swoole的http服务并没有起来 ????
然后查看php错误日志 惊奇!
PHP Fatal error: Uncaught Error: Class 'swoole_http_server' not found
确定浏览器打印的phpinfo 是有swoole扩展的,而且终端的php跟界面的php是同一个版本的php 百思不解 然后我在终端
$ php -m | grep swoole
结果很意外 终端里面找不到swoole 扩展!!! 可是浏览器里打印有的啊 而且是同一个PHP版本??奇怪了
然后在终端执行 php -i 这个是在终端打印phpinfo
$ php -i
然后对比这个
终端打印phpinfo
include_path => .:/Applications/MAMP/bin/php/php7.1.22/lib/php => .:/Applications/MAMP/bin/php/php7.1.22/lib/php
浏览器打印phpinfo
phpinfo.png
是同一个PHP没错了 。。。
然后再对比php.ini引用路径
终端的:
image.png
浏览器的
image.png
终于找到原因了 两个地方引用的php.ini不一样 于是在终端引用的php.ini同样加上extension = swoole.so即可
$ php -m | grep swoole
swoole
网友评论