2013-01-23 11 views
15

PHP manualに、さまざまな種類のPHP拡張機能(PHPモジュール)を理解していました。 Zendモジュール(主にPHP gurus向け)、組込みモジュールと外部モジュールがあります。動的にロードされたPHP拡張機能をコマンドラインから確認する

PHPモジュールが動的にロードされたかどうか、またはPHPバイナリに組み込まれているかどうかをコマンドラインから確認する方法はありますか?

私は:php -m私はすべての読み込まれたモジュールを取得しますが、どのモジュールが組み込みであり、どのモジュールが外部であるかを知りたいと思います。

答えて

2

これは通常の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"; 
    } 
} 

ロードされた拡張機能が利用できる可能性が探して動的ライブラリを持っているか否かをチェックすることによって、推測の生意気な方法かもしれないが、あなたのために十分かもしれません!

+0

ただし、.soライブラリがphp.iniに含まれているかどうかを確認する必要があります( "extension = $ m.so"の行にbenが追加されている場合)?また、phpinfo()の出力にこれに関する情報があるかどうか疑問に思っていましたが、私はそれを見ることができませんでした – rodrunner

35

ただ、コマンドラインで次のコマンドを実行します。詳細については、

php -m 

またはこの:

php -i 

は、この情報がお役に立てば幸いです。

+2

これは、動的にロードされる拡張機能とバイナリに組み込まれている拡張機能を区別するのにどのように役立ちますか?限り、私は両方の種類が同じように表示されることができます。私が何かを見逃していない限り、これは質問にはまったく関係ありません。特に質問者が質問の中で 'php -m'と言い、彼が必要とする情報を与えない理由を説明したからです。 –

+1

人々は質問全体ではなく、主題を読んで、最初の答えではなく、2番目の答えで探している答えを見つけます。 これを修正するには、動的に読み込まれた拡張機能だけが興味を持っているという質問の件名がもっと具体的でなければなりません: "動的に読み込まれたPHP拡張機能をコマンドラインからチェックする" – Ilija

4

1)の出力から

php -i 

は、次のパラメータ見つけ実行します。

ロードされた設定ファイルを - これはphp.iniファイルの場所を指定しますが、あなたのPHPで使用されています。

追加の.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" 

2)php.iniファイルの名前を変更し、追加の.iniファイルとフォルダの名前を変更。

3)を繰り返し、ステップ#1とロード設定ファイル追加の.iniファイルが両方を解析されていることを確認し(なし)

4の値を持つ)を実行し

php -m 

phpバイナリに組み込まれている拡張機能だけを含むリストが表示されます。

関連する問題