9

PHPass ( http://www.openwall.com/phpass/ )を使用すると、次の警告が表示されます。

open_basedir restriction in effect. File(/dev/urandom) is not within the allowed path(s)

これは大きな問題ではありませんが (他の問題が発生する可能性があります)、この警告が表示されないようにしたいと思います。PHP アプリケーションは別のサーバーで実行する必要があります。一部のユーザーはそのパスを許可された open_basedir パスに追加できますが、他のユーザーはその構成にアクセスできません。

私の最初の推測は、で可読性をチェックすることでしたがis_readable()、それでも警告が表示されます。

質問:特定のパスまたはファイルが open_basedir パスに追加されているかどうかを確認するにはどうすればよいですか?

4

3 に答える 3

3

ini_get()次の関数を使用して、PHP ディレクティブの値を読み取ることができます。

ini_get('open_basedir')

ディレクティブが空でない場合は、1 つ以上のパスが で区切られた文字列が含まれている必要がありますPATH_SEPARATOR

于 2014-01-29T09:47:40.247 に答える
1

file_existsディレクトリが制限されている場合は警告を発します。使ってみましょう:

function isRestricted($path)
{
    // Default error handler is required
    set_error_handler(null);

    // Clean last error info. You can do it using error_clean_last in PHP 7.
    @trigger_error('__clean_error_info');

    // Testing...
    @file_exists($path);

    // Restore previous error handler
    restore_error_handler();

    // Return `true` if error has occured
    return ($error = error_get_last()) && $error['message'] !== '__clean_error_info';
}
于 2016-04-18T09:36:21.913 に答える