rod*_*ner 20 command-line-interface php-extension
我正在检查PHP手册以了解不同类型的PHP扩展(PHP模块).有Zend模块(主要用于PHP专家),内置模块和外部模块.
有没有办法从命令行告诉PHP模块是否已动态加载或是否内置到PHP二进制文件中?
我的意思是:php -m我得到所有加载的模块,但我想知道哪些是内置的,哪些是外部的.
小智 56
只需在命令行上运行此命令:
php -m
Run Code Online (Sandbox Code Playgroud)
或者更多信息:
php -i
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
小智 7
1)跑
php -i
Run Code Online (Sandbox Code Playgroud)
从输出中找到以下参数:
加载配置文件 - 这将指定php使用的php.ini文件的位置.
扫描此目录以获取其他.ini文件 - 如果这不是空的,则此目录中的某些.ini文件将动态加载php扩展.
解析了其他.ini文件 - 从上一个参数中指定的目录加载的.ini文件.
如果您使用Linux,您可以:
php -i | grep -e "Loaded Configuration File" -e "Scan this dir for additional .ini files" -e "Additional .ini files parsed"
Run Code Online (Sandbox Code Playgroud)
2)重命名您的php.ini文件,并使用其他.ini文件重命名该文件夹.
3)重复步骤#1并验证解析的加载配置文件和附加.ini文件的值均为(无)
4)跑
php -m
Run Code Online (Sandbox Code Playgroud)
您现在将看到一个列表,其中仅包含内置于php二进制文件的扩展名.
我不确定这是否可以从常规 PHP 代码中实现,您可能可以通过自己的扩展进行一些内部 Zend 调用。然而,可能有一种厚颜无耻的猜测方式,通过检查加载的扩展是否有看起来可能可用的动态库......
$extdir=ini_get('extension_dir');
$modules=get_loaded_extensions();
foreach($modules as $m){
$lib=$extdir.'/'.$m.'.so';
if (file_exists($lib)) {
print "$m: dynamically loaded\n";
} else {
print "$m: statically loaded\n";
}
}
Run Code Online (Sandbox Code Playgroud)
这并非万无一失,但对您来说可能就足够了!
| 归档时间: |
|
| 查看次数: |
44539 次 |
| 最近记录: |