0

For my web hosting panel, users need to be blocked from accessing files outside their own directory (/var/www/u/s/username). I tried to use this line in httpd.conf to prevent people from going up a directory.

<Directory /var/www/users/>
php_admin_value open_basedir .:/usr/lib/php5
</Directory>

But in php.ini, it seems to have no effect. What am I doing wrong?

4

4 に答える 4

2

ばかげた提案かもしれませんが、php.ini を変更した後に Web サーバーを再起動しましたか?

別の方法として、「auto_prepend_file」ディレクティブを使用してファイルを追加し、open_basedir ディレクティブを現在のユーザー ディレクトリに引き締めるスクリプトを含めます。

PHP.net から ( http://www.php.net/manual/en/ini.sect.safe-mode.php )

PHP 5.3.0 以降、 open_basedir は実行時に強化できます。これは、open_basedir が php.ini で /www/ に設定されている場合、スクリプトは実行時に ini_set() を使用して構成を /www/tmp/ に引き締めることができることを意味します。

追加の提案:

INI オーバーライドを有効にするには、Apache 構成を適切にセットアップする必要があります。サーバーまたは仮想ホストの Apache 構成に「AllowOverride Options」または「AllowOverride All」が設定されていることを確認してください。

http://us2.php.net/configuration.changes

http://httpd.apache.org/docs/2.0/mod/core.html#allowoverride

于 2009-04-03T19:42:00.797 に答える
1

ユーザーディレクトリごとに行を追加する必要がある場合があります。

<Directory /var/www/u/s/username>
php_admin_value open_basedir "/var/www/u/s/username/:/shared/path/"
</Directory>

末尾のスラッシュは、ユーザー「username」が「username2」ディレクトリにアクセスするのを防ぐためにここにあることに注意してください。

于 2009-04-14T11:08:16.340 に答える
0

ほとんどの場合、間違った「php.ini」を変更しています。

于 2009-04-02T15:57:39.253 に答える
0
  1. 私が知る限り、それはパス形式ではなく、1 つのディレクトリでなければなりません。
  2. 「。」の使用 open_basedir を使用してもまったく意味がありません。は常に現在のディレクトリです。chdir('/wherever/you/want')「。」を持つことができます。として展開/wherever/you/want
于 2009-04-02T14:41:50.923 に答える