9

ロードされているかどうかに関係なく、利用可能なすべてのPHP拡張機能を見つける方法が必要です。PHPによってロードされた拡張機能を確認するにはどうすればよいですか? ただし、ロードされた拡張機能を見つける方法についてのみ説明しています。アンロードされた拡張機能も見つける方法が欲しいです。

php.iniからextension_dirを知っているので、ls /extension_dir/*.so26個のエントリを返しました。で試してみるとphp -m、57件のエントリーがありました。どうしてそれは可能ですか?

どのPHP拡張機能をロードできるかを知るにはどうすればよいですか?どれがロードされているのか知りたくないのですが、どれがロード可能か知りたくありません。

4

3 に答える 3

4

一部の拡張機能は静的にPHPに組み込まれる場合があることに注意してください。これらはphp.iniに拡張子として表示されますが、無効にすることはできません。ほとんどの場合、php.iniまたは.so/.DLLファイルでこれらを参照するextension=行は表示されません。静的にコンパイルされた拡張機能を削除するには、PHP自体を再コンパイルする必要があります。ほとんどの場合、静的にコンパイルされた拡張機能には、削除する必要がほとんどないコア機能が含まれているため、これはほとんど必要ありません。

http://arr.gr/blog/2012/06/on-php-extensions/

MatteoTassinariに感謝します。

于 2012-08-28T11:12:29.233 に答える
2

ロード可能な拡張子のリストが必要な場合は、の値と等しい拡張子を持つファイルのリストを取得する必要があります。これらのファイルは、PHP_SHLIB_SUFFIXPHPがPHP拡張子をチェックするディレクトリにあります(<install-dir>/lib/php/extensions/<debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO)。すでにロードされている拡張機能を避けたい場合は、拡張機能の名前(ファイル拡張子なし)をextension_loaded()に渡す必要があります。

ファイルに正しい構造がないため(たとえば、ファイルが破損しているため)、またはPHP拡張子がファイルに依存しているため、正しいファイル拡張子を持つファイルを拡張子としてPHPからロードできないことに注意してください。見つからないか、ロードできません。

于 2012-08-28T13:49:04.627 に答える
1

1つの方法は、「extension_dir」の値を確認することです。

phpinfo();

次に、ディレクトリをスキャンしてファイルを確認します。

$exts = scandir("/usr/lib/php5/extension_dir/");
print_r($exts);
于 2012-09-22T20:47:11.480 に答える