Spezielle Protokolle in PHP, detaillierte Erklärung des PHP://-Protokolls

墨辰丷
Freigeben: 2023-03-25 19:18:01
Original
2601 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich die speziellen Protokolle in PHP vorgestellt. Das Protokoll php:// ist detailliert. Interessierte Freunde können mehr erfahren.

php://Zugriff auf verschiedene Eingabe-/Ausgabeströme (I/O-Ströme)


Beschreibung


PHP bietet einige verschiedene Eingabe-/Ausgabeströme (IO), die den Zugriff auf PHP-Eingabe- und Ausgabeströme, Standardein- und -ausgabe sowie Fehlerdeskriptoren, In-Memory, ermöglichen. und Festplattensicherung Temporäre Dateiströme und Filter, die auf anderen Lese- und Schreibdateiressourcen arbeiten können.


php://stdin, php://stdout und php://stderr


und erlaubt direkter Zugang Der entsprechende Eingabe- oder Ausgabestream des PHP-Prozesses. Der Datenstrom verweist auf den kopierten Dateideskriptor. Wenn Sie ihn also öffnen und dann schließen, Durch einfaches Ausschalten der Kopie wird das tatsächlich referenzierte STDIN nicht beeinträchtigt. Beachten Sie, dass das Verhalten von PHP in diesem Bereich bis PHP 5.2.1 fehlerhaft war. Es wird empfohlen, einfach die Konstanten STDIN, STDOUT und STDERR zu verwenden, anstatt diese Wrapper manuell zu öffnen.

ist schreibgeschützt und schreibgeschützt.


php://input


ist ein schreibgeschützter Stream, der auf die angeforderten Rohdaten zugreifen kann. Bei POST-Anfragen ist es besser, anstelle von zu verwenden, da es nicht auf einer bestimmten Direktive angewiesen ist. Darüber hinaus gibt es in diesem Fall standardmäßig keine Auffüllung. Benötigt möglicherweise weniger Speicher als die Aktivierung von Always_populate_raw_post_data. enctype="multipart/form-data" ist ungültig.

Hinweis: Der geöffnete Datenstrom kann nur einmal gelesen werden; Datenströme unterstützen keine Suchvorgänge. Abhängig von der Implementierung von SAPI kann jedoch beim Speichern der Anforderungshauptdaten ein anderer Datenstrom geöffnet und erneut gelesen werden. Normalerweise ist dies nur bei POST-Anfragen der Fall, nicht bei anderen Anfragemethoden wie PUT oder PROPFIND.


php://output


ist ein schreibgeschützter Datenstrom. Ermöglicht das Drucken auf die gleiche Weise wie Echo Schreiben Sie in den Ausgabepuffer.


php://fd


Ermöglicht den direkten Zugriff auf den angegebenen Dateideskriptor. Verweist beispielsweise auf Dateideskriptor 3.


php://memory und php://temp


und ist eine ähnliche Datei Ein Wrapper für Datenströme, der das Lesen und Schreiben temporärer Daten ermöglicht. Der einzige Unterschied zwischen den beiden besteht darin, dass Daten immer im Speicher gespeichert werden, während sie gelöscht werden, sobald die Speichermenge einen vordefinierten Grenzwert erreicht (der Standardwert ist). 2 MB) wird in einer temporären Datei gespeichert. Der Speicherort der temporären Datei wird auf die gleiche Weise wie sys_get_temp_dir() bestimmt.

Das Speicherlimit von

kann durch Hinzufügen von /maxmemory:NN gesteuert werden. NN ist die maximale Datenmenge, die im Speicher gespeichert wird. Bei Überschreitung werden temporäre Dateien verwendet.


php://filter


ist ein Meta-Wrapper, Entwickelt zum Filtern von Anwendungen, wenn ein Datenstrom geöffnet wird. Dies ist nützlich für All-in-One-Dateifunktionen wie readfile(), file() und file_get_contents(). Es besteht keine Möglichkeit, zusätzliche Filter anzuwenden, bevor der Inhalt des Datenstroms gelesen wird.

Das Ziel verwendet die folgenden Parameter als Teil seines Pfades. Auf einem Pfad können zusammengesetzte Filterketten angegeben werden. Eine detaillierte Verwendung dieser Parameter finden Sie in den spezifischen Beispielen.

php://filterparameter
php://filter 参数
名称 描述
resource=<要过滤的数据流> 这个参数是必须的。它指定了你要筛选过滤的数据流。
read=<读链的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
write=<写链的筛选列表> 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
<;两个链的筛选列表> 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。
Name Beschreibung
resource= Dies Parameter ist erforderlich. Es gibt den Datenstrom an, den Sie filtern möchten.
read=< Kettenfilterliste lesen> Dieser Parameter ist optional. Sie können einen oder mehrere Filternamen festlegen, getrennt durch Pipe-Zeichen (|).
write=< Liste der Schreibketten filtern> Dieser Parameter ist optional. Sie können einen oder mehrere Filternamen festlegen, getrennt durch Pipe-Zeichen (|).
< Liste für eine Kette> Jede Filterliste ohne das Präfix read= oder write= wird entsprechend auf die Lese- oder Schreibkette angewendet.


Optional

封装协议摘要(针对 php://filter,参考被筛选的封装器。)
属性 支持
首先于 allow_url_fopen No
首先于 allow_url_include 仅 php://input、 php://stdin、 php://memory 和 php://temp。
允许读取 仅 php://stdin、 php://input、 php://fd、 php://memory 和 php://temp。
允许写入 仅 php://stdout、 php://stderr、 php://output、 php://fd、 php://memory 和 php://temp。
允许追加 仅 php://stdout、 php://stderr、 php://output、 php://fd、 php://memory 和 php://temp(等于写入)
允许同时读写 仅 php://fd、 php://memory 和 php://temp。
支持 stat() 仅 php://memory 和 php://temp。
支持 unlink() No
支持 rename() No
支持 mkdir() No
支持 rmdir() No
仅仅支持 stream_select() php://stdin、 php://stdout、 php://stderr、 php://fd 和 php://temp。



Protokoll aktualisieren

版本 说明
5.3.6 增加 。
5.1.0 增加  和 。
5.0.0 增加 。



Beispiel



Beispiel #1 php://temp/maxmemory


Mit dieser optionalen Option können Sie das maximale Speicherlimit festlegen, bevor Sie mit der Verwendung temporärer Dateien beginnen.

<?php
// Set the limit to 5 MB.
$fiveMBs = 5 * 1024 * 1024;
$fp = fopen("php://temp/maxmemory:$fiveMBs", &#39;r+&#39;);

fputs($fp, "hello\n");

// Read what we have written.
rewind($fp);
echo stream_get_contents($fp);
?>
Nach dem Login kopieren
<code style="font-family:&#39;Fira Mono&#39;, &#39;Source Code Pro&#39;, monospace;display:block;"><br/>

Beispiel # 2 php://filter/resource=


Dieser Parameter muss sich am Ende befinden und zeigt auf den Datenstrom, der gefiltert werden muss gefiltert werden.


<?php
/* 这简单等同于:  
readfile("http://www.example.com");  
实际上没有指定过滤器 
*/readfile("php://filter/resource= 
?>
Nach dem Login kopieren

Beispiel #3 php://filter/read=


Dieser Parameter akzeptiert einen oder mehrere Filternamen, getrennt durch das Pipe-Zeichen |.


<?php
/* 这会以大写字母输出 www.example.com 的全部内容 */
readfile
(
"php://filter/read=string.toupper/resource=http://www.example.com"
);
/* 这会和以上所做的一样,但还会用 ROT13 加密。 */
readfile
(
"php://filter/read=string.toupper|string.rot13/resource=http://www.example.com"
);
?>
Nach dem Login kopieren
<span style="color :rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span><code style="font-family:&#39;Fira Mono&#39;, &#39;Source Code Pro&#39;, monospace;display:block;"><span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span><br/>


Beispiel Nr. 4 php://filter/write=


Dieser Parameter benötigt a Oder mehrere Filternamen, getrennt durch das Pipe-Zeichen |.


<?php
/* 这会通过 rot13 过滤器筛选出字符 "Hello World"
  然后写入当前目录下的 example.txt */
file_put_contents
(
"php://filter/write=string.rot13/resource=example.txt"
,
"Hello World"
);
?>
Nach dem Login kopieren
<span style="color :rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span><code style="font-family:'Fira Mono', 'Source Code Pro', monospace;display:block;"><span style="color:rgb(0,0,0);"><span style="color:rgb(0,0,187);"></span></span><br>

Verwandt Empfohlen:

Http-Protokoll-Post-Request-Parameter in PHP, PHP-Protokoll-Post-Request_PHP-Tutorial

Http-Protokoll-Post-Request-Parameter in PHP, PHP-Protokoll-Post-Request

Eingabevariablen überstiegen 1000 beim Senden des PHP-Beitrags

Das obige ist der detaillierte Inhalt vonSpezielle Protokolle in PHP, detaillierte Erklärung des PHP://-Protokolls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage