最近在捣鼓swoole以及phpunit时,需要用到PHP-CLI(PHP的命令行模式),可是却中途却一直出现问题,就以phpunit为例,在用到调试数据库的断言时,出现could not find driver,以及在捣鼓swoole时,使用了swoole的定义类缺找不到,最终原来发现PHP-CLI模式的拓展与PHP-FPM那边的拓展配置不一致导致的。
基础
在填坑前先介绍下几个路径以及命令:
/usr/local/php 通常是通过网页调用PHP脚本(FastCGI,FPM)时,php配置以及拓展放置的目录
/usr/bin/ 用户命令放置的地方,也是PHP-CLI调用php命令放置的地方
php -m 查看CLI模式下加载的拓展以及模块
在脚本中编写phpinfo();然后网页访问,可以查看网络调用脚本时加载的拓展和模块
/etc/php 在某些情况下,PHP-CLI调用PHP脚本时,php配置以及拓展放置的目录,也是本文的罪魁祸首
步骤
在linux里安装多个PHP版本或者,安装过PHP7时有可能会出现CLI模式与普通模式(网页调用PHP脚本)配置以及模块不一致的情况,由于我是用LNMP安装的PHP7,之后有安装了PHPStorm,不知是不是乱搞的关系,导致CLI与普通模式加载配置不一致了,在折腾Swoole时就明显发现了这个问题。
要知道模块是否加载一致,普通模式用phpinfo() ,命令行模式直接用php -m就可以查到模块是否一致了。
若不一致时,绝大多是/usr/bin/php(大多是软连接)指向/etc/php/bin目录里的php
|
|
要解决也是十分简单,只需把/usr/local/php/bin里面的php的软连接放到/usr/bin/里即可,注意要把之前/usr/bin/里的php删掉
|
|
接着在命令行里
|
|
即可发现CLI模式加载的模块就与普通模式保持一致了