今日の WEB プログラム開発技術には多くの議論があることは承知していますが、今後 WEB 技術がどのように発展しても、WEB プログラムの品質検査のための基本的な通信プロトコルは非常に重要です。 今日は WEB アプリケーションの内部の仕組みについて紹介します。
PHP には、fopen()、copy()、file_exists()、filesize() などの ファイル システム 関数で使用できる、多くの組み込み URL スタイル ラッパー プロトコルが付属しています。 これらのパッケージング プロトコルに加えて、stream_wrapper_register() を介してカスタム パッケージング プロトコルを登録することもできます。
注: カプセル化されたプロトコルを記述するために使用される URL 構文は、scheme://... 構文のみをサポートします。スキーム:/ およびスキーム: 構文はサポートされていません。
phpプロトコルタイプ
file:// — ローカルファイルシステムにアクセスします
http:// — HTTP URLにアクセスします
ftp:// — FTP URLにアクセスします
php:// — 個々の入出力ストリーム (I/O ストリーム) へのアクセス
zlib:// — 圧縮ストリーム
data:// — データ (RFC 2397)
glob:// — 一致するファイル パス パターンの検索
phar :// — PHP アーカイブ
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — オーディオ ストリーミング
expect:// — インタラクティブ ストリーミングの処理
PHP。 ini
allow_url_fopen: on デフォルトでは、このオプションをオンにすると、fopen カプセル化プロトコルが URL 形式でアクティブになり、URL オブジェクト ファイルなどへのアクセスが許可されます。
allow_url_include: off はデフォルトでオフになっています。このオプションがオンの場合、URL オブジェクト ファイルなどの組み込みが許可されます。
file:// プロトコル
file:// - ローカル ファイル システムにアクセスします。影響を受けません。 allow_url_fopen およびallow_url_include による
Usage
file:// [ファイルの絶対パスとファイル名]
http://127.0.0.1/code/1.php?file=file:///E:\phpStudy\WWW\code\phpinfo.php
php://protocol
php:// — 各入力にアクセスします/output ストリーム (I/O ストリーム)
allow_url_fopen を有効にする必要はありません。allow_url_include を有効にする必要があるのは、php://input、php://stdin、php://memory、php://temp のみです。
php://stdin、php://stdout、php://stderr
php://stdin、php://stdout、php://stderr では、対応する入力ストリームまたは出力ストリームに直接アクセスできます。 PHPプロセス。
php://stdin は読み取り専用、php://stdout と php://stderr は書き込み専用です。
php://stdin
<?php while($line = fopen('php://stdin','r')) {//open our file pointer to read from stdin echo $line."\n"; echo fgets($line);//读取
<?php $fd = fopen('php://stdout', 'w'); if ($fd) { echo $fd."\n"; fwrite($fd, "test"); fwrite($fd, "\n"); fclose($fd); } ?>
<?php $stderr = fopen( 'php://stderr', 'w' ); echo $stderr."\n"; fwrite($stderr, "uknow" ); fclose($stderr); ?>
最も一般的に使用される疑似プロトコル。一般に、任意のファイルを読み取るために使用できます。
php://filter は、データ ストリームが開かれたときにアプリケーションをフィルタリングするために設計されたメタラッパーです。 これは、ストリームのコンテンツが読み取られる前に追加のフィルターを適用する機会がない、readfile()、file()、file_get_contents() などのオールインワン ファイル関数に役立ちます。
resource=de477f86848571466ba7e10ef7c5e981 このパラメータは必須です。フィルタリングするデータ ストリームを指定します。
read=10897605d3dd8fab45058b5150a800e4 このパラメータはオプションです。 1 つ以上のフィルター名をパイプ文字で区切って設定できます。
write=2c67c8a165d423872251bfd9adc101eb このパラメータはオプションです。 1 つ以上のフィルター名をパイプ文字で区切って設定できます。
9e177fbb2a5d8a88878b62022937adac read= または write= のプレフィックスが付いていないフィルタ リストは、必要に応じて読み取りチェーンまたは書き込みチェーンに適用されます。
<?php include($_GET['file']) ?>
http://127.0.0.1/code/1.php?file=php://filter/read=convert.base64-encode/resource=./phpinfo.php
これらを読んだ後、私は信じますケース この方法はマスターしました。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
関連書籍:
PHP製品フラッシュセールのタイミング実装(大規模なトラフィックを解決するソリューション)
PHPがWebサイトの大規模なトラフィックと高い同時実行性をどのように解決するか
以上がphpプロトコルの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。