ホームページ  >  記事  >  バックエンド開発  >  PHP は、各仮想サイトを独立して実行できるように open_basedir を構成します_PHP チュートリアル

PHP は、各仮想サイトを独立して実行できるように open_basedir を構成します_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:55:35836ブラウズ

数年前、私は PHP を実行している Apache のセキュリティが不十分であると不満を述べていました。1 つのサイトがダウンすると、サーバー上の他のサイトも影響を受けることになります。当時、これは IIS に比べて非常に悪いと感じました。IIS では、各サイトで使用するアカウントが異なる限り、サイトやディレクトリにアクセスするときに使用する匿名アカウントを設定できるからです。 、サイト間のセキュリティは相互に影響しません。 Apache では、特定のユーザーとしてサイトを実行する方法を詳細に制御することはできませんが、PHP を設定して各サイトの独立した動作を実現することもできます。少なくとも、サーバー全体がダウンしている状況があり、再度実行することはできません。

この制御は、PHP の open_basedir を構成することで実現できます。この構成は IIS でも役立ちますが、ここでは Apache での構成についてのみ説明します。

open_basedir は、ファイルにアクセスするユーザーのアクティビティ範囲を指定された領域 (通常はホーム ディレクトリのパス) に制限できます。記号「.」を使用して現在のディレクトリを表すこともできます。 open_basedir は、Windows ではセミコロンを使用してディレクトリを区切り、他のシステムでは
コロンを使用して、複数のディレクトリを同時に設定することもできます。 Apache モジュールに適用すると、親ディレクトリの open_basedir パスが自動的に継承されます。以下では、例として Linux システムでの構成を取り上げます

方法 1: php.ini で

open_basedir = .:/tmp/ を設定する

方法 2: Apache によって構成された VirtualHost に

php_admin_value open_basedir .:/tmp/ を設定します

方法 3: Apache 構成のディレクトリに

php_admin_value open_basedir .:/tmp/ を設定します

3 つの設定方法の説明:

a. 方法 2 は方法 1 よりも優先度が高く、方法 2 は方法 1 よりも優先度が高く、方法 3 は方法 1 をオーバーライドします。 . 2;
b. 「/tmp/」は、PHP のデフォルトの一時ファイル (アップロードされたファイル、セッションなど) がこのディレクトリに配置されるため、通常はこのディレクトリを追加する必要があります。そうしないと、一部の機能が使用できなくなります。
c. 設定ディレクトリに追加されるのは、php ファイルが実行される現在のディレクトリです。これにより、サイトがファイルを 1 つずつ設定する必要がなくなります。サイト ディレクトリの外では、対応する VirtualHost ディレクトリに個別に設定する必要があります。
セットアップが完了したら、操作する PHP Web ホース (phpspy など) を忘れずに見つけて、問題がないかどうかをテストしてください。権限は十分に制御されているはずです。 PHP セキュリティ構成の経験がある場合は、それを共有してください。

http://www.bkjia.com/PHPjc/364378.html

www.bkjia.com本当http://www.bkjia.com/PHPjc/364378.html技術記事数年前、私は PHP を実行している Apache のセキュリティが不十分であることに不満を抱いていました。1 つのサイトがダウンすると、サーバー上の他のサイトも影響を受けることになります。その時は、IISに比べて、これも…と感じました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。