一部のユーザーが自分のサーバーで自分のコードを記述/実行/テストできるようにするアプリケーションを作成しています。アプリケーションからプリロードされたコードを使用しています。これらのユーザーが自分のディレクトリでのみ作業できるようにしたいのですが、このタスクは で実行できますが、問題は、アプリケーションのコードを含めopen_basedir();
たい場合、またはがまたは の内部にある場合、ファイルがが呼び出される前に含まれていません。require
include
function
class
open_basedir
例 :
<?php
function test()
{
require 'test.php';
}
test(); // ok
ini_set('open_basedir', 'users/username/');
test(); // permission denied
アプリケーションの「信頼できる」コードを含めることを許可するが、ユーザーのコードが別のディレクトリにアクセスすることを許可しないことは何とか可能ですか? 可能であれば、open_basedir() に関係なくても、これを解決する方法の例または主なアイデアを教えてください。
私の例では、許可を拒否したくありません。これにより、アプリケーションにいくつかの優れた機能を追加できるようになります。
もう一つの例 :
spl_autoload_register(function($class) {
require $class . '.php';
});
ini_set('open_basedir', 'folder/');
new Test(); // Warning: require(): open_basedir restriction in effect.