Heim  >  Artikel  >  Backend-Entwicklung  >  Spezielle Protokolle in PHP, detaillierte Erklärung des PHP://-Protokolls

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

墨辰丷
墨辰丷Original
2018-05-15 17:48:282552Durchsuche

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=42617adde19ea23d35a6d030bf3614c9 这个参数是必须的。它指定了你要筛选过滤的数据流。
read=a70e0717f5bf907d1d01d15c88b07fa4 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
write=901dd5a2bf80d6ba3575d2b297b76956 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。
303bffd13872b337910611675bdd821f 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。
Name Beschreibung
resource=1fb290e5c93742f3e916c7059ff5d12d Dies Parameter ist erforderlich. Es gibt den Datenstrom an, den Sie filtern möchten.
read=bd188a76f88f6c48a7303e7b2b701840 Dieser Parameter ist optional. Sie können einen oder mehrere Filternamen festlegen, getrennt durch Pipe-Zeichen (|).
write=f47ea7360fa897eed99fa1404a7a6e66 Dieser Parameter ist optional. Sie können einen oder mehrere Filternamen festlegen, getrennt durch Pipe-Zeichen (|).
397f1c1cccaa93d79ea2e64d5eb1a0f3 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);
?>
<code style="font-family:'Fira Mono', 'Source Code Pro', monospace;display:block;"><br>

Beispiel # 2 php://filter/resource=1fb290e5c93742f3e916c7059ff5d12d


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= 
?>

Beispiel #3 php://filter/read=3ffa24609c522e2fd0126bc8671545f0


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"
);
?>
<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>


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


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"
);
?>
<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!

Stellungnahme:
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