是否有可能从命令行找到当前的PHP扩展API?

时间:2014-12-17 09:24:04

标签: php version php-extension

我想询问是否可以从命令行输出当前的PHP扩展API版本,即:

例如我使用PHP 5.6.2(API 20131226)并且我还安装了PHP 5.5.18(API 20121212),我可以使用正确的 php 命令在两个版本之间切换,是有一种方法可以从终端看到我正在使用哪个API用于当前执行的php版PHP?

检查了man php,但未找到与此需求相关的任何内容。 另外php -vphp --version也没有向我显示API版本:

$ php -v # or php --version
PHP 5.6.2 (cli) (built: Oct 20 2014 16:21:27) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
    with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

5.5.18 php CLI命令也是如此。

所以,实际上,有没有办法实现这个目标?

编辑:找到答案,查看下面的帖子,或@RichardBernards对此帖的评论。

3 个答案:

答案 0 :(得分:1)

仔细查看php -i的输出。在加载的配置文件列表之后,它显示以下信息:

PHP API => 20121113
PHP Extension => 20121212
Zend Extension => 220121212
Zend Extension Build => API220121212,NTS
PHP Extension Build => API20121212,NTS

你可以提取你需要的东西:

php -i | grep 'PHP API'

将产生:

PHP API => 20121113

如果您只需要提取数字(将其与其他数字进行比较或在脚本中使用它等),您可以将结果进一步传递到cutsed以删除额外数字字符:

php -i | grep 'PHP API' | cut -f2 -d'>'

或更好

php -i | grep 'PHP API' | sed -e 's/PHP API => //'

cut的那个将生成前面带空格字符的数字,sed的数字只生成数字,不会填充。

答案 1 :(得分:0)

也许这会有所帮助?

php -i | grep version

答案 2 :(得分:0)

这提供了扩展目录,最后一部分是API版本:
php-config --extension-dir

它也可以用于特定版本的PHP的select数据,例如7.2:
php-config7.2 --extension-dir

通过将API版本传递给基本名称来提取它:
basename $(php-config7.2 --extension-dir)