2012-10-10 8 views
13

man phpと出力がphp -hであることを確認しましたが、そのようなことはありませんでした。iniファイルを変更せずに、PHPのcliインターフェイスから拡張機能を読み込むことはできますか?

しかし、私はそれをどこかに見て覚えています、あなたはphp -Xabc.so script.phpのような何かをして一時的にエクステンションを読み込むことができました。

誰でも知っていますか?あなたの拡張がされていない場合

php -dextension=abc.so myfile.php 

:CLI経由で定期的な拡張をロード

"PHPのCLIロード拡張子" をグーグルでそれを見つけた
+0

なぜこのアプローチが「通常の」方法と違いますか? –

+2

@ダゴン:それは、それらのいずれかで必要とされる場合、すべてのスクリプトにいくつかのエキゾチックなモジュールをロードすることは意味がありません。したがって、明示的にロードする方が簡単でしょう。 – zerkms

+0

ブート時に一度ロードされないので、実際のオーバーヘッドはありませんか? –

答えて

19

がで行われますデフォルトパスは絶対パスも指定できます:

php -dextension=/path/to/abc.so myfile.php 
0 Zendの拡張をロードするに

、それは常に絶対パスを渡すことをお勧めしたい:

php -dzend_extension=/path/to/abc.so myfile.php 
+0

"zend extension"は異なる拡張機能のタイプであることを忘れています:-S +1 – zerkms

+0

うーん、私はまだ/ usr/lib/php/modules /とにかくコピーを避けるために? – daisy

+0

@ warl0ck絶対パスも指定できます。つまり、 '-dextension =/path/to/extension.so'です。 –

1

http://php.net/manual/en/features.commandline.options.php

-z <file>  Load Zend extension <file>. 

+0

'modules/abc.soは有効なZend拡張子ではないようです.'と書かれているので、zend拡張子はphp拡張子ではないと思いますか? – daisy

+0

@ warl0ck:それは依存します。いくつかの拡張機能は、xdebugのようなZend拡張機能です – zerkms

0

php.iniを無視して)デフォルトですべてを無効にするとしようと、特定のPHPエクステンションを指定:

php -n $(for e in curl ctype json iconv; { echo -dextension=$e.so; } | xargs) -m 

スクリプトを実行するには、-mをファイル名に変更します。

関連する問題