| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
Runkit_Sandbox(PECL runkit >= 0.7.0) Runkit_Sandbox — Runkit Sandbox クラス -- PHP バーチャルマシン 説明Runkit_Sandbox クラスをインスタンス化すると、 独自のスコープとプログラムスタックを持つ新しいスレッドが生成されます。 コンストラクタに渡すオプションを設定することで、この環境では インタプリタの機能を制限することが可能です。そのため、ユーザーから渡された コードを実行する場合などに、より安全な環境を提供可能です。
コンストラクタ
void Runkit_Sandbox::__construct
([ array
$options
] )
例1 機能を制限したサンドボックスのインスタンス化
<?php 変数へのアクセスサンドボックス環境内のすべてのグローバル変数は、サンドボックス オブジェクトのプロパティとしてアクセス可能です。しかし、 オブジェクト変数やリソース変数はインタプリタ越しに 利用することができないことに注意しましょう。これは、これらの 2 つのスレッドのメモリ管理が仮想マシン上で行われていることが原因です。 さらに、配列はすべてディープコピーされ、参照渡しのデータは 失われます。つまり、参照渡しのデータをインタプリタ越しに使用することは できないということです。 例2 サンドボックス内部の変数の扱い
<?php 上の例の出力は以下となります。 bar barbaz bool(false) PHP 関数のコールサンドボックス内で定義されている関数は、すべてサンドボックス オブジェクトのメソッドとしてコールできます。これには、擬似関数として 扱われる以下のような言語構造も含みます。eval()、 include、include_once、 require、require_once、 echo、print、 die() および exit()。 例3 サンドボックス内の関数のコール
<?php 上の例の出力は以下となります。 fbc サンドボックス内の関数への引数は、外部の PHP インスタンスから 渡されます。もしサンドボックスのスコープから引数を渡したい場合は、 上で示したようにサンドボックスのプロパティとしてそれにアクセスする ようにしてください。 例4 サンドボックス内の関数に引数を渡す
<?php 上の例の出力は以下となります。 bar baz サンドボックス設定の変更
runkit バージョン 0.5 以降では、配列へのアクセスと同じ構文で、
実行時にサンドボックスの一部の設定を変更することが可能です。
|
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「Runkit_Sandbox - Runkit Sandbox クラス -- PHP バーチャルマシン」をGoogle検索
|