0

CIコントローラーでPhpass 0.3を使用しているときにこのエラーが発生します

メッセージ: is_readable() [function.is-readable]: open_basedir 制限が有効です。ファイル (/dev/urandom) が許可されたパス内にありません: (/home/:/usr/lib/php:/usr/local/lib/php:/tmp)

ファイル名: phpass-0.3/PasswordHash.php

誰かが私に問題を教えてもらえますか?

4

1 に答える 1

0

open_basedir は、php.ini ファイルで定義されたディレクティブです。

これは、PHP スクリプトからアクセスできる最下位のディレクトリ (通常は webroot) に設定されます。

/dev/ など、ツリーのさらに下にあるファイル/ディレクトリにアクセスしようとすると、許可されなくなり、メッセージが表示されます。

php.ini を編集し、open_basedir をサーバー ルートに設定する必要があります。これは、誰かがスクリプトに悪意のあるコードを挿入すると、システム全体にアクセスできるようになるため、セキュリティ的には一般的に悪いことです。

本当に必要な場合は、Web フォルダーにあるスクリプト (Perl、Python など) を実行して /dev/urandom を読み取る方が安全です。

$output = `/scripts/get_urandom.pl`;
// Process output

phpass のバージョン 1.8 は、エラーを抑制することでこの問題を解決します。

リビジョン 1.7 からの変更: +2 -2 行:

open_basedir 制限が有効な場合に警告を抑制するために、is_readable() の前に「@」を付けました。

于 2012-03-22T08:22:59.230 に答える