
Index: phpdoc/ja/bookinfo.xml
diff -u phpdoc/ja/bookinfo.xml:1.8 phpdoc/ja/bookinfo.xml:1.9
--- phpdoc/ja/bookinfo.xml:1.8 Sat Dec 23 21:35:38 2000
+++ phpdoc/ja/bookinfo.xml Sat Jan 13 07:05:06 2001
@@ -74,13 +74,14 @@
1998
1999
2000
+ 2001
PHP ドキュメント作成グループ
著作権
- 本マニュアルは、 © Copyright 1997, 1998, 1999, 2000
+ 本マニュアルは、 © Copyright 1997, 1998, 1999, 2000 ,2001
the PHP Documentation Group が著作権を保有しています。
本マニュアルの先頭ページに本グループの
メンバー一覧があります。
Index: phpdoc/ja/preface.xml
diff -u phpdoc/ja/preface.xml:1.4 phpdoc/ja/preface.xml:1.5
--- phpdoc/ja/preface.xml:1.4 Wed Aug 2 16:21:08 2000
+++ phpdoc/ja/preface.xml Sat Jan 13 07:05:06 2001
@@ -16,13 +16,12 @@
このマニュアルについて
- このマニュアルは、DocBook DTD
- を使用して SGML で書かれており、
+ このマニュアルは、DocBook XML
+ DTDを使用して XML で書かれており、
DSSSL (Document
Style and Semantics Specification Language) をフォーマットに
- 使用しています。HTML、
- TeX、RTFのフォーマット
- に使用するツールは、
+ 使用しています。HTML、TeX、
+ RTFのフォーマットに使用するツールは、
James Clark が作成した
Jade と
Norman Walsh が作成した
@@ -30,9 +29,22 @@
PHP のドキュメント作成作業は、&link.stig; によりまとめられています。
- このマニュアルの一日毎のHTMLスナップショットが翻訳も含めて
+ 様々な言語そしてPDF, プレーンテキスト,プレーン
+ HTML, WinHelp, RTF を含むフォー
+ マットのマニュアルを
+ &url.php.docs; からダウンロー
+ ドすることが可能です。
+
+
+ このマニュアルの一日毎のHTMLスナップショットが翻訳版も含めて
&url.php.snaps.manual;
にて取得可能です。
+
+
+ &url.php.cvs;にてこの文書の
+ XMLソースコードのダウンロードに関するより詳細な
+ 情報を得ることが可能です。文書は、phpweb モジュー
+ ルに保存されています。
Index: phpdoc/ja/chapters/intro.xml
diff -u phpdoc/ja/chapters/intro.xml:1.8 phpdoc/ja/chapters/intro.xml:1.9
--- phpdoc/ja/chapters/intro.xml:1.8 Sat Oct 28 08:45:42 2000
+++ phpdoc/ja/chapters/intro.xml Sat Jan 13 07:05:06 2001
@@ -1,6 +1,6 @@
入門
-
+
PHP とは?
@@ -15,53 +15,50 @@
初歩的な例
-<html>
- <head>
- <title>Example</title>
- </head>
- <body>
+<html>
+ <head>
+ <title>Example</title>
+ </head>
+ <body>
<?php
echo "Hi, I'm a PHP script!";
?>
- </body>
-</html>
+ </body>
+</html>
+
+ PerlやCのような他の言語で書かれたCGIスクリプトとの違いは、HTMLを出
+ 力する多くのコマンドを用いてプログラムを書く代わりに何かを行う(こ
+ の場合はテキストを出力する)埋め込みコードを含むHTMLスクリプトを書
+ くということです。PHP コードは、"PHPモード" に入ったり出たりする特
+ 別な開始および終了のタグで括られています。
+
- PerlやCのような他の言語で書かれたCGIスクリプトとの違いは、
- HTMLを出力する多くのコマンドを用いてプログラムを書く代わりに
- 何かを行う(この場合はテキストを出力する)埋め込みコードを
- 含むHTMLスクリプトを書くということです。
- PHP コードは、"PHPモード" に入ったり出たりする特別な開始および
- 終了のタグで括られています。
-
-
- PHP がクライアントサイド JavaScript のようなものと異なっている
- 点は、コードがサーバーで実行されるということです。
- 上のようなスクリプトをサーバー上においていたとしたら、
- クライアントは、スクリプトを実行した結果を受け取りますが、
- その出力を作成したコードに関する情報を得ることはできません。
- 全てのHTMLファイルをPHPで処理するようにWebサーバーを設定すること
- さえ可能で、この場合、ユーザーが袖の内に何があるかを見分けることは
- 不可能になることでしょう。
+ PHP がクライアントサイド JavaScript のようなものと異なっている点は、
+ コードがサーバーで実行されるということです。上のようなスクリプトを
+ サーバー上においていたとしたら、クライアントは、スクリプトを実行し
+ た結果を受け取りますが、その出力を作成したコードに関する情報を得る
+ ことはできません。全てのHTMLファイルをPHPで処理するようにWebサーバー
+ を設定することさえ可能で、この場合、ユーザーが袖の内に何があるかを
+ 見分けることは不可能になることでしょう。
PHP にできること
- 最も基本的なこととして、PHPはフォームからデータを取得したり、
- 動的にページの内容を生成したり、クッキーを送信・受信するといった
- 他のCGIプログラムにできることは全て行うことができます。
+ 最も基本的なこととして、PHPはフォームからデータを取得したり、
+ 動的にページの内容を生成したり、クッキーを送信・受信するといった
+ 他のCGIプログラムにできることは全て行うことができます。
- PHP の機能の中で最も強力で優れた機能は、広範なデータベースをサポート
- していることでしょう。
- データベース機能を用いたWebページの作成は、非常に
- 簡単です。以下のデータベースが現在サポートされています。
+ PHP の機能の中で最も強力で優れた機能は、広範なデータベースをサポー
+ トしていることでしょう。データベース機能を用いたWebページの作成は、
+ 非常に簡単です。以下のデータベースが現在サポートされています。
Adabas D
@@ -95,76 +92,70 @@
ルを用いて通信を行うことも可能です。
-
-
-
- PHP の歩み
-
- PHP は、1994 年の秋に &link.rasmus; により作成されました。
- 当初の非リリース版は、誰が自分のレジュメを見ているのかを調べる
- ために彼のホームページに使用されました。
- 1995 年の始めに最初の版が公開され、Personal Home Page Tools として
- 知られるようになりました。
- これは、小数の特殊なマクロのみを解釈する非常に簡単なパーサエンジンと
- ホームページに一般的に使用される、ゲストブック、カウンタやその他の
- ものといった、複数のユーティリティから構成されていました。
- このパーサは 1995年の中頃に書き直され、PHP/FI バージョン 2 と
- 名づけられました。
- FI は、Rasmus が書いた html フォームデータを解釈する別のパッケージに
- 由来しています。
- Rasmus は Personal Home Page tools スクリプトを Form Interpreter と
- 組み合わせ mSQL サポートを加えました。
- これにより PHP/FI が生まれました。
- PHP/FI は驚くべきペースで成長し、他の人からコードが提供されるように
- なりました。
-
-
- 厳密な統計データを提供することは困難ですが、1996 年の終わりまでに
- PHP/FI は世界中の 15,000 以上のWeb サイトで使用されていたと
- 推定されます。
- 1997年半ばまでに、この数は50,000 以上まで増えました。
- 同じ 1997 半ばに PHP 開発体制が変更になりました。
- Rasmus の育てるプロジェクトに他の人がコードを提供する形態から、
- より組織的に開発を行なう体制になりました。パーサは、Zeev Suraski と
- Andi Gutmans により最初から書き直され、この新たなパーサは PHP バージョン 3
- の基となりました。
- 多くのユーティリティコードが PHP/FI から PHP 3 に移植され、
- その多くは完全に書き直されました。
-
-
- 今日(2000/10)、PHP 3 と PHP 4 の両方が
- C2 セキュリティ製品である StrongHold Web サーバーや RedHat Linux といった
- 商用製品と共に出荷され、
- NetCraftにより提供される値
- (Netcraft Web Server Survey
- も参照下さい)の外挿に基づき保守的に見積もっても、PHP
- は世界中の 3,300,000 以上のサイトで使用されていると思われます。
- 分かりやすくいうと、この数はNetscape の主力製品である
- Enterprise サーバーが Internet で使われている数よりも多く、イ
- ンターネットで使用されているIISサーバーの総数(380万)に近い値です。
+
+
+
+ PHP の歩み
+
+ PHP は、1994 年の秋に &link.rasmus; により作成されました。当初の非
+ リリース版は、誰が自分のレジュメを見ているのかを調べるために彼のホー
+ ムページに使用されました。1995 年の始めに最初の版が公開され、
+ Personal Home Page Tools として知られるようになりました。
+ これは、小数の特殊なマクロのみを解釈する非常に簡単なパーサエンジンと
+ ホームページに一般的に使用される、ゲストブック、カウンタやその他の
+ ものといった、複数のユーティリティから構成されていました。
+ このパーサは 1995年の中頃に書き直され、PHP/FI バージョン 2 と
+ 名づけられました。
+ FI は、Rasmus が書いた html フォームデータを解釈する別のパッケージに
+ 由来しています。
+ Rasmus は Personal Home Page tools スクリプトを Form Interpreter と
+ 組み合わせ mSQL サポートを加えました。
+ これにより PHP/FI が生まれました。
+ PHP/FI は驚くべきペースで成長し、他の人からコードが提供されるように
+ なりました。
+
+ 厳密な統計データを提供することは困難ですが、1996 年の終わりまでに
+ PHP/FI は世界中の 15,000 以上のWeb サイトで使用されていたと推定さ
+ れます。1997年半ばまでに、この数は50,000 以上まで増えました。同じ
+ 1997 半ばに PHP 開発体制が変更になりました。Rasmus の育てるプロジェ
+ クトに他の人がコードを提供する形態から、より組織的に開発を行なう体
+ 制になりました。パーサは、Zeev Suraski と Andi Gutmans により最初
+ から書き直され、この新たなパーサは PHP バージョン 3 の基となりまし
+ た。多くのユーティリティコードが PHP/FI から PHP 3 に移植され、そ
+ の多くは完全に書き直されました。
+
+
+ 最新のバージョン (PHP 4) は、より高性能なスクリプトエンジン
+ Zendを使用し、より広範囲なサードパー
+ ティのライブラリと拡張機能をサポートし、一般的なWebサーバの全てに
+ ついてネーティブサーバモジュールとして実行可能です。
+
+
+ 現在(2001/1)、PHP 3 と PHP 4 の両方がC2セキュリティ製品である
+ StrongHold Web サーバーや RedHat Linux といった商用製品と共に出荷され、
+ NetCraftにより提供される値
+ (Netcraft Web Server Survey
+ も参照下さい)の外挿に基づき保守的に見積もっても、PHPは世界中の 510
+ 万以上のサイトで使用されていると思われます。分かりやすくいうと、こ
+ の数はマイクロソフトのIISサーバがインターネットで使用されている数
+ (503万)よりもやや多いです。
+
-
- この文章を書いている現時点でも、より高い性能を提供するために
- 強力なZendスクリプトエンジンを
- 使用する次世代のPHPが作成中であり、
- Apache以外の複数のWebサーバーもネーティブサーバーモジュール
- としてサポートされる予定です。
-
Index: phpdoc/ja/chapters/security.xml
diff -u phpdoc/ja/chapters/security.xml:1.8 phpdoc/ja/chapters/security.xml:1.9
--- phpdoc/ja/chapters/security.xml:1.8 Thu Jan 4 22:29:03 2001
+++ phpdoc/ja/chapters/security.xml Sat Jan 13 07:05:06 2001
@@ -256,8 +256,24 @@
--enable-discard-path を付けてコンパイルする必要があります。
+
+
+ 最新版を維持する
+
+ PHPは、他の大規模なシステムと同様に、常に調査、改良されています。
+ 各新バージョンにはしばしばセキュリティ上の問題や設定上の問題、そし
+ て、システム全体のセキュリティや安定性に影響するその他の問題を修正
+ するためのメジャーまたはマイナーな変更が含まれています。
+
+
+ 他のシステムレベルのスクリプト言語やプログラムと同様に、最善のアプ
+ ローチは、頻繁に更新し、最新のバージョンとその変更を注視し続けるこ
+ とです。
+
+
+
Apache モジュールとしてインストール
@@ -275,19 +291,21 @@
リプトの一部としてそのコードをインクルードすることも可能です。
- しばしば、PHPユーザ(この場合は、Apacheユヂ֩に関するセキュʣÆィ
- 上のリスクが非常に小さいという観点で一旦セキュリティが確立されると、
- PHPは、ユーザディレクトリにウイルスファイルを書き込んだり、非公開の
- データベースにアクセスしたり変更したりといったことが出来なくなりま
- す。しかし、同じくファイルの書き込みやデータベーストランザクション
- に関して所要の安全性が確保されていると言えます。この観点からしばし
- ば行われるセキュリティ上の失敗としてApacheにルート権限を与えるとい
- うものがあります。
+ しばしば、PHPユーザ(この場合はApacheユーザ)が非常に小さなリスクを
+ 有する場所に一度セキュリティが確立されると、PHPはユーザディレクト
+ リにウイルスファイルを書き込んだりすることができなくなります。もし
+ くは、非公開のデータベースにアクセスしたり変更したりといったことが
+ 出来なくなります。この場合、ファイルの書き込みやデータベーストラン
+ ザクションに関して等しく安全性が確保されていると言えます。
+ この観点からしばしば行われるセキュリティ上の失敗としてApacheにルー
+ ト権限を与えるというものがあります。
+
+
Apacheユーザの権限をルートに昇格させることは非常に危険であり、シ
ステム全体を危険にさらす可能性があります。よって、sudoやchrootの実
- 行、ルートȩ限で実行を行う他の手段は、セキュリティに精通した人以外
+ 行、ルート権限で実行を行う他の手段は、セキュリティに精通した人以外
は、考慮するべきではありません。
@@ -390,7 +408,7 @@
より安全なファイル名の確認
<?php
-$username = $HTTP_REMOTE_USER;
+$username = get_env("REMOTE_USER");
$homedir = "/home/$username";
if (!ereg('^[^./][^/]*$', $userfile))
@@ -408,6 +426,56 @@
+
+ エラーのレポート
+
+ 標準的な攻撃手法の中に不完全なデータをシステムに送信し、返されるエ
+ ラーの種類と内容を調べることにより、システムを調べるというものがあ
+ ります。これにより、システムのクラッカーがありうる弱点を調査するた
+ めにそのサーバに関する情報を調べることが可能になります。
+
+
+ 通常返されるPHPのエラーは、エラーを生じた関数やファイル、エラーを
+ 発生したPHPファイル、エラーを発生した行番号のような情報が含まれて
+ おり、スクリプトをデバッグする開発者に非常に有用です。これらが調べ
+ ることができる情報の全てです。デバッグ目的でPHPの開発者が
+ show_source(), highlight_string(), highlight_file() を使用する
+ ことはまれなわけではありません。しかし、実用サイトでは、これは秘密
+ の変数、未確認の構文、その他の危険な情報を公開することになってしま
+ います。
+
+
+ 例えば、多くの一般的なエラー形式では、システムはPHPを実行している
+ ことを示します。攻撃者が .html ページを調べ、(システムの既知の弱点
+ を探すために)誤ったデータを送信することによりバックエンドを調べた
+ いと思った場合、システムをPHPと共に構築されていることを知ることが
+ 可能となる可能性があります。
+
+
+ 関数エラーは、システムが特定のデータベースエンジンが実行しているこ
+ と、または、Webページのプログラム内容や設計に関する鍵を示すことが
+ あります。これにより、データベースポートをオープンしたり、Webペー
+ ジに固有のバグや弱点を調べるといったより詳細な調査を行うことが可能
+ となります。例えば、異なった不正なデータを送信することにより、攻撃
+ 者は、(エラー行番号から)そのスクリプトの異なる場所を調べることと同
+ 時にそのスクリプトの認証の順番を定義することが可能です。
+
+
+ ファイルシステムまたは一般的なPHPエラーは、Webサーバが有する許可属
+ 性やWebサーバのファイル構造を示すことがあります。エラーコードを書
+ く開発者は、元は秘密の情報を容易に公開することにより、この問題を悪
+ 化させる可能性があります。
+
+
+ この問題に対しては3種類の対策があります。最初の対策は、全ての関数
+ をよく調べ、大部分のエラーの修正を試みることです。2番目は、実行す
+ るコードのエラーリポートを完全に無効にすることです。3番目は、
+ PHPのカスタムエラー処理関数を使用して独自のエラーハンドラを作成す
+ ることです。システムのセキュリティポリシーに基づき、これらの3種類
+ の対策が適用可能かどうかを判定します。
+
+
+
ユーザが送信したデータ
Index: phpdoc/ja/features/http-auth.xml
diff -u phpdoc/ja/features/http-auth.xml:1.5 phpdoc/ja/features/http-auth.xml:1.6
--- phpdoc/ja/features/http-auth.xml:1.5 Sat Dec 23 21:35:38 2000
+++ phpdoc/ja/features/http-auth.xml Sat Jan 13 07:05:07 2001
@@ -59,11 +59,12 @@
ん。
- サーバーからリターンコード401を受けた際に、NetscapeおよびInternet
- Explorerは共にローカルブラウザのウインドウ上の認証キャッシュを消去
- します。この機能により、簡単にユーザーを"ログアウト"させ、強制的に
- ユーザー名とパスワードを再入力させることができます。この機能は、"タ
- イムアウト"付きのログインや、"ログアウト"ボタンに適用されています。
+ サーバーからリターンコード401を受けた際に、Netscape Navigatorおよび
+ Internet Explorerは共にローカルブラウザのウインドウ上の認証キャッシュ
+ を消去します。この機能により、簡単にユーザーを"ログアウト"させ、強
+ 制的にユーザー名とパスワードを再入力させることができます。この機能
+ は、"タイムアウト"付きのログインや、"ログアウト"ボタンに適用されて
+ います。
新規に名前/パスワードを入力させるHTTP 認証の例
@@ -97,13 +98,13 @@
能に依存しないように注意する必要があります。Lynx によるテストの結果、
Lynx は、認証証明書を 401 サーバー応答によりクリアしないことが明ら
かになっています。このため、back を押してから foward を再度押すこと
- により(証明書の要件が変更されない限り)リソースをオープンすることが
- できます。
+ により証明書の要件が変更されない限りリソースをオープンすることがで
+ きます。しかし、ユーザは'_'キーを押すことにより認証情報をクリアする
+ ことが可能です。
- MicrosoftのIISサーバーとCGI版のPHPの組み合わせでは、
- この機能は、IISの制約により使用することができないということにも
- 注意して下さい。
+ MicrosoftのIISサーバーとCGI版のPHPの組み合わせでは、この機能は、IIS
+ の制約により使用することができないということにも注意して下さい。
Index: phpdoc/ja/functions/datetime.xml
diff -u phpdoc/ja/functions/datetime.xml:1.16 phpdoc/ja/functions/datetime.xml:1.17
--- phpdoc/ja/functions/datetime.xml:1.16 Thu Jan 4 22:29:04 2001
+++ phpdoc/ja/functions/datetime.xml Sat Jan 13 07:05:07 2001
@@ -741,7 +741,7 @@
- %d - 日付を10進数で。(00から31)
+ %d - 日付を10進数で。(01から31)
Index: phpdoc/ja/functions/wddx.xml
diff -u phpdoc/ja/functions/wddx.xml:1.6 phpdoc/ja/functions/wddx.xml:1.7
--- phpdoc/ja/functions/wddx.xml:1.6 Thu Jan 4 22:29:05 2001
+++ phpdoc/ja/functions/wddx.xml Sat Jan 13 07:05:07 2001
@@ -4,16 +4,20 @@
- 以下の関数は、WDDX と組み合わせて動作することを
- 想定しています。
-
+ 以下の関数は、WDDX と組み合わせて
+ 動作することを想定しています。
+
+ WDDX を使用するには、(Apache 1.3.7以降に付属する)expatライブラリを
+ インストールし、PHPを
+ および を指定して
+ 再コンパイルする必要があります。
+
+
変数をシリアル化する全ての関数は配列の最初要素をその配列が配列と構造体
のどちらでシリアル化されるのかを定義するために使用するということに注意
- して下さい。
- 最初の要素が文字列をキーとして有する場合は構造体でシリアル化され、
- その他の場合は配列でシリアル化されます。
+ して下さい。最初の要素が文字列をキーとして有する場合は構造体でシリ
+ アル化され、その他の場合は配列でシリアル化されます。
単一の値のシリアル化
@@ -84,14 +88,13 @@
-
- wddx_serialize_value は、
- 指定された値から WDDX パケットを作成するために使用されます。
- この関数は、var の値および
- オプションとしてパケットヘッダに示す
- comment 文字列をとり、WDDX パケットを返します。
-
+ wddx_serialize_value は、指定された値から
+ WDDX パケットを作成するために使用されます。この関数は、
+ var の値およびオプションとしてパケットヘッ
+ ダに示す comment 文字列をとり、WDDX パケッ
+ トを返します。
+
@@ -113,17 +116,16 @@
-
- wddx_serialize_vars は、
- 渡された変数のシリアル化された表現形式を有する構造体を用いて
- WDDX パケットを作成するために使用されます。
-
+ wddx_serialize_vars は、指定された変数のシリ
+ アル化された表現形式を有する構造体を用いてWDDX パケットを作成する
+ ために使用されます。
+
wddx_serialize_vars の引数の数は可変であり、
- 各引数は変数の名前を表す文字列または変数または他の配列等の
- 名前となる文字列を有する配列のどちかとなります。
-
+ 各引数は変数の名前を表す文字列または変数または他の配列等の名前と
+ なる文字列を有する配列のどちかとなります。
+
wddx_serialize_vars の例
@@ -138,24 +140,26 @@
print wddx_serialize_vars("a", "b", $clvars);
?>
-
-
+
+
- 上の例は、次の出力を行います。
+ 上の例は、次の出力を行います。
<wddxPacket version='1.0'><header/><data><struct><var name='a'><number>1</number></var>
<var name='b'><number>5.5</number></var><var name='c'><array length='3'>
<string>blue</string><string>orange</string><string>violet</string></array></var>
<var name='d'><string>colors</string></var></struct></data></wddxPacket>
-
-
+
+
wddx_packet_start
- 新規の WDDX パケットを内部の構造体を用いて開始する
+
+ 新規の WDDX パケットを内部の構造体を用いて開始する
+
説明
@@ -169,15 +173,13 @@
-
- 変数が追加されるような新規の WDDX パケットを開始するためには、
- wddx_packet_start を使用して下さい。
- この関数は、オプションの comment 文字列をとり、
- 後に他の関数で使用されるパケット ID を返します。
- この関数は変数を保持するためにパケットの内部に、
- 自動的に構造体の定義を作成します。
-
+ 変数が追加されるような新規の WDDX パケットを開始するためには、
+ wddx_packet_start を使用して下さい。この関数
+ は、オプションの comment 文字列をとり、後
+ に他の関数で使用されるパケット ID を返します。この関数は変数を保
+ 持するためにパケットの内部に、自動的に構造体の定義を作成します。
+
@@ -194,12 +196,11 @@
int packet_id
-
wddx_packet_end は、
- packet_id で指定された WDDX パケットを終了し、
- パケットを含む文字列を返します。
-
+ packet_id で指定された WDDX パケットを終了
+ し、パケットを含む文字列を返します。
+
@@ -222,7 +223,6 @@
-
wddx_add_vars は渡された変数をシリアル化し
packet_id で指定されたパケットに結果を
@@ -246,14 +246,13 @@
string packet
-
wddx_deserialized は、
- packet 文字列をとり、シリアル化
- されたパケットを元に戻します。
- この関数は、文字列、数字、または配列といった結果を返します。
- シリアル化された構造体は、連想配列に戻されることに注意して下さい。
-
+ packet 文字列をとり、シリアル化されたパケッ
+ トを元に戻します。この関数は、文字列、数字、または配列といった結
+ 果を返します。シリアル化された構造体は、連想配列に戻されることに
+ 注意して下さい。
+