PHP 4.1.0 リリースのお知らせ PHP 4.1.0 のリリースのお知らせ (1) 長い QA プロセスを経て、PHP 4.1.0 がついにリリースされました。その他の重要な改善点: - セキュリティを向上させるための新しい入力インターフェイス (以下を参照) - 全体的にパフォーマンスが大幅に向上 - Windows での革命的なパフォーマンスと安定性の向上 Windows でのマルチスレッド サーバー モジュール (ISAPI、Apache など) は、同等のパフォーマンスを発揮します。負荷がかかった状態で 30 倍高速になりました! Windows での PHP の革新的なパフォーマンスと安定性の向上に協力してくれた Microsoft の Brett Brewer と彼のチームに感謝します。マルチスレッド サーバー モジュールにより、30 倍高速なパフォーマンスが実現します。 - 拡張機能のバージョン管理サポートは、現時点ではほとんど使用されていませんが、異なる拡張機能に対して個別のバージョン番号をサポートするためのインフラストラクチャが導入されました。そのマイナスの影響は、古いバージョンの PHP に対して構築された拡張機能を読み込むと、明確なメッセージではなく、PHP 4.1.0 で構築された拡張機能のみを使用するようにしてください。拡張機能の翻訳サポートは、現在はほとんど使用されていませんが、さまざまなバージョンの特定の拡張モジュールをサポートするためにインフラストラクチャが整備されています。マイナスの影響は、古いバージョンの拡張モジュールと競合することです。必ずphp4.1.0拡張モジュールを使用する必要があります。 - ターンキー出力圧縮のサポート ターンキー出力圧縮のサポート - *大量*の修正と新機能 多くの箇所が修正され、多くの機能が追加されました。お気づきの方もいるかもしれませんが、このバージョンは歴史上初めて実際に中央の桁をインクリメントしたものであり、非常に歴史的なものです :) この前例のない変更の 2 つの主な理由は、新しい入力インターフェイスとモジュールのバイナリ互換性の破壊でした。バージョン管理のサポートのため、{わかりません。 !ふふ!理解してから翻訳してください} 以下は、新しい入力メカニズムの説明です。PHP 4.1.0 の変更点の完全なリストについては、このセクションの最後までスクロールしてください。変更の完全なリストについては、以下を参照してください ---------------------------------- セキュリティ: 新しい入力メカニズム セキュリティ: 新しい何よりもまず、次の行の内容に関係なく、PHP 4.1.0 は古いバージョンの古い入力メカニズムを * サポートしており、変更することなく引き続き正常に動作することを強調しておくことが重要です。以下の内容に十分な注意を払うことが非常に重要であることを強調しなければなりません。 PHP 4.1.0 は古い入力メカニズムをサポートしています。古いアプリケーションは変更せずに引き続き実行できます。以上のことを理解したので、次に進みましょう :) さまざまな理由により、register_globals がオンであることに依存する (つまり、フォーム、サーバー、および環境変数が自動的にグローバル名前空間の一部になることに依存する) PHP セットアップは、非常に多くの場合悪用可能です。たとえば、コード部分: さまざまな理由で、PHP は register_globlas を ON に設定する必要があります (たとえば、ビッダー、サーバー、環境変数は自動的にグローバル名前空間の一部になります)。これらはさまざまな程度で干渉されることがよくあります。これはコードの一部です: リモートユーザーは認証済みをフォーム変数として渡すだけで、authenticate_user() が false を返したとしても、$authenticated は実際には true に設定されるため、悪用される可能性がありますが、これは単純に見えます。たとえば、実際には、かなりの数の PHP アプリケーションが、この誤機能に関連するものによって悪用されてしまう可能性があります。authenticate_user() が false を返した場合でも、$authenticated は true に設定されます。これは非常に単純な例にすぎません。実際、かなりの数のプログラムが同様のバグのある機能に騙されています。PHP で安全なコードを作成することは十分に可能ですが、PHP では安全でないコードを簡単に作成してしまうという事実があると感じました。明らかに、世界中の PHP コードの大部分がこの機能の存在に依存しているため、実際にこの機能を PHP から削除する予定はありません。もちろん、安全な PHP コードを書くことは完全に可能であり、PHP が安全でないコードを簡単に書いてしまうという事実は非常に悪いことであると私たちは感じています。もの。私たちは広範囲にわたる変化を試みることにしました。 register_globals に対して。明らかに、ほとんどのコードはこの機能に依存しているため、将来のある時点で実際に削除することはできません。しかし、ユーザーが register_globals をオフにして PHP アプリケーションを構築できるようにするために、古いグローバル変数の代わりに使用できるいくつかの新しい特殊変数を追加しました。 PHP を作成するとき。アプリケーションでは、古いグローバル変数の代わりに使用される新しい特殊変数をいくつか追加しました。これらは 7 つの新しい特別な配列です: $_GET - GET で送信されるフォーム変数が含まれます $_POST - POST で送信されるフォーム変数が含まれます $_COOKIE - HTTP Cookie 変数が含まれます $_SERVER - サーバー変数 (REMOTE_ADDR など) が含まれます $_ENV - 環境変数が含まれます$_REQUEST - GET 変数、POST 変数、および Cookie 変数のマージ。つまり、ユーザーから送信されるすべての情報は、セキュリティの観点からは信頼できません。 /Cookie 変数、つまり、ユーザーおよびセキュリティ フォームから得られるすべての情報。しかし、セキュリティの観点から見ると、それらは信頼できません。 $_SESSION - セッション モジュールによって登録された HTTP 変数が含まれます。 さて、これらの変数にはこの特別な情報が含まれているという事実以外に、別の意味でも特別です。つまり、これらの変数はどのスコープでも自動的にグローバルになります。これは、アクセスすることなく、どこからでもアクセスできることを意味します。たとえば、これらの変数には特別な情報が含まれており、どの環境でも自動的にグローバル変数になります。これは、グローバル化することなくどこからでもアクセスできることを意味します。例: function example1() { print $_GET["name"]; // 動作します。global $_GET; // $_GET をグローバル変数として宣言する必要はありません。これにより、古いコードを新しいコードに移行する手間が少し軽減され、新しいコードの作成が容易になると確信していました。もう 1 つの優れたトリックは、$_SESSION 配列に新しいエントリを作成すると、それらのエントリがセッション変数として自動的に登録されることです。 session_register () を呼び出した場合、このトリックはセッション モジュールのみに限定されます。たとえば、$_ENV に新しいエントリを設定しても、暗黙的な putenv() は正常に実行されません。これにより古いコードの移植が容易になることを願っており、また新しいコードの作成も容易になると確信しています。もう 1 つのトリックは、新しい $_SESSION 配列エントリを作成すると、session_register() を呼び出すのと同じように、それらのエントリをセッション b 変数として自動的に登録することです。このトリックはセッション モジュールでのみ機能します。たとえば、新しい $_ENV エントリを設定しても、暗黙的に putenv() は実行されません。 PHP 4.1.0 はまだデフォルトで register_globals が on に設定されているため、アプリケーションの作成者、特に幅広いユーザーが使用するパブリックなアプリケーションの作成者には、 register_globals が off に設定されている環境で動作するようにアプリケーションを変更することをお勧めします。もちろん、この移行をはるかに容易にする PHP 4.1.0 で提供される新機能を利用する必要があります。特に、PHP 4.1.0 はデフォルトで register_globals を設定します。広く使用されているため、register_globals をオフにしても動作するようにアプリケーションを変更してください。もちろん、移行を容易にするために、PHP 4.1.0 の新機能を使用する必要があります。 PHP の次の準メジャー バージョンでは、PHP の新規インストールでは register_globals がデフォルトでオフに設定されます。すでに register_globals がオンに設定されている php.ini ファイルがある既存のインストールには影響しません。これが影響するのは、PHP を新しいマシンにインストールする場合 (通常、新しいユーザーの場合) です。必要に応じて、register_globals をオフに設定しても問題はありません。 、インストールされており、php.ini で register_globals が on に設定されているため、影響を受けません。これは、php を新しいマシン (通常は新しいユーザー) としてインストールし、それをオンにすることを選択できる場合にのみ影響します。注: これらの配列の一部には古い名前がありました ($HTTP_GET_VARS など)。これらの名前はまだ機能しますが、新しい短い自動グローバル バージョンに切り替えることをお勧めします。