PHPアプリを独自のディレクトリとphp.iniに制限するにはどうすればよいですか?
-
11-07-2019 - |
質問
Macで複数のPHPアプリを実行し、OS X 10.5.6、Apache 2、PHP 5を実行しています。各プロジェクトのサブドメインセットアップ、各サブドメインのホストファイルエントリ、およびApache構成の仮想ディレクトリブロックがあります。 。
project1.localhostは/ Library / WebServer / Documents / Project1
に移動します
project2.localhostは/ Library / WebServer / Documents / Project2
に移動します
など...
ただし、このメソッドは実際には<!> quot; isolate <!> quot;ではありません。 Webアプリ。たとえば、次のようなスクリプトを含める場合:
<?php
include("/includes/include.php");
?>
これは、コンピューターのベースディレクトリからスクリプトを参照します。したがって、アクセスします
C:/includes/include.php
参照する方法はありますか
C:/Library/WebServer/Documents/Project2/includes/include.php
基本的に、独自のディレクトリ以外のものを認識しないようにします。また、サブドメインごとにphp.iniを使用する方法はありますか?
解決
仮想ホストごとにphp.iniを設定することは可能だと思います
<VirtualHost *:80>
...
PHPINIDir /full/path/to/php/ini/
</VirtualHost>
この方法でopen_basedirなどをカスタマイズできます
他のヒント
open_basedir ディレクティブは、httpd.confファイルのフォルダーブロックです。次のようになります。
<!> lt; DIRECTORY / full / path / to / folder / taining / script / <!> gt;
php_admin_value open_basedir <!> quot; / full / path / to / top / folder / of / desired / tree / <!> quot;
<!> lt; / DIRECTORY <!> gt;
1つのこと-パスを/で終わらせない場合は、ワイルドカードが一致します。つまり、<!> quot; / var / etc / my <!> quot; <!> quot; / var / etc / myFolder <!> quot;と一致します。 <!> quot; / var / etc / myMothersFolder <!> quot;と同様に、<!> quot; / var / etc / my / <!> quot;その正確なフォルダー名にのみ一致します。
アプリケーションの分離について〜これは、PHPスクリプトが他のユーザーにアクセスできないようにするためのセキュリティ保護に関してですか?詳しく説明してください-
php.iniについて-ディレクトリごとに特定のphp.iniを使用する方法は知りませんが、おそらくini_set()行を含むphp includeページを作成できます。 / p>
<?php
// in your header or along top of all php modules in your pap
require_once ( '/path/to/includes/ini_set.php' );
// ...
?>
およびini_set.phpスクリプト:
<?php
// one of these for each override of defaults set in php.ini file --
ini_set ( $varname, $newvalue );
ini_set ( $varname, $newvalue );
ini_set ( $varname, $newvalue );
?>
ini_set()関数について詳しく知りたい場合は、php.netのドキュメントページをご覧ください。 http://us3.php.net/ini_set
これがいくらか役立つと思います〜
これを行う最善の方法は、FCGI(mod_fcgid)経由でPHPを使用することです。これにより、vHostごとに異なるユーザーと異なるphp.iniを使用してPHPを実行できます。
Ubuntuでこのような構成をセットアップする方法の例を次に示します。 http://www.howtoforge.com/how-to-set-up-apache2-with-mod_fcgid-and-php5-on-ubuntu-8.10
フルパス名を使用する場合は、それを使用できます:
<?php
include dirname( __FILE__ ) . '/includes/include.php';
?>
相対パスを試してください!のような:
<?php
include("./includes/include.php");
?>
または
<?php
include("includes/include.php");
?>