Cet article présente principalement les protocoles spéciaux en php, le protocole php:// est détaillé, les amis intéressés peuvent en savoir plus.
php:// — Accéder à divers flux d'entrée/sortie (flux d'E/S)
PHP fournit divers flux d'entrée/sortie (IO), permettant d'accéder aux flux d'entrée et de sortie de PHP, aux entrées et sorties standard et aux descripteurs d'erreurs, en mémoire, et sauvegardes de disque Flux de fichiers temporaires et filtres pouvant fonctionner sur d'autres ressources de fichiers en lecture et en écriture.
, et autorisé accès direct
Le flux d'entrée ou de sortie correspondant du processus PHP. Le flux de données fait référence au descripteur de fichier copié, donc si vous l'ouvrez puis le fermez,
En désactivant simplement la copie, le STDIN
réellement référencé ne sera pas affecté. Notez que le comportement de PHP dans ce domaine était bogué jusqu'à PHP 5.2.1. Il est recommandé d'utiliser simplement les constantes STDIN
, STDOUT
et STDERR
au lieu d'ouvrir ces wrappers manuellement.
est en lecture seule et en écriture seule.
est un flux en lecture seule qui peut accéder aux données brutes demandées. Dans le cas des requêtes POST, il est préférable d'utiliser à la place de , car il ne repose pas sur une directive spécifique. De plus, dans ce cas, il n’y a pas de remplissage par défaut. Nécessite potentiellement moins de mémoire que l’activation de always_populate_raw_post_data. enctype="multipart/form-data" n'est pas valide.
est un flux de données en écriture seule. Permet d'imprimer de la même manière que écho Écrivez dans le tampon de sortie.
Permet un accès direct au descripteur de fichier spécifié. Par exemple, fait référence au descripteur de fichier 3.
et est un fichier similaire Un wrapper pour les flux de données qui permet de lire et d'écrire des données temporaires. La seule différence entre les deux est que les données sont toujours stockées en mémoire, tandis qu'elles seront supprimées une fois que la quantité de mémoire atteint une limite prédéfinie (la valeur par défaut est 2 Mo) est stocké dans un fichier temporaire. L'emplacement du fichier temporaire est déterminé de la même manière que sys_get_temp_dir().
La limite de mémoire depeut être contrôlée en ajoutant /maxmemory:NN est la quantité maximale de données conservées en mémoire en octets. Si elle dépasse, les fichiers temporaires seront utilisés.
est un méta-wrapper, Conçu pour filtrer les applications lorsqu'un flux de données est ouvert. Ceci est utile pour les fonctions de fichier tout-en-un comme readfile(), file() et file_get_contents(), Il n'est pas possible d'appliquer des filtres supplémentaires avant la lecture du contenu du flux de données.
La cible utilise les paramètres suivants dans le cadre de son chemin. Des chaînes de filtres composites peuvent être spécifiées sur un chemin. Pour une utilisation détaillée de ces paramètres, veuillez vous référer à des exemples spécifiques.
名称 | 描述 |
---|---|
resource=<要过滤的数据流> | 这个参数是必须的。它指定了你要筛选过滤的数据流。 |
read=<读链的筛选列表> | 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。 |
write=<写链的筛选列表> | 该参数可选。可以设定一个或多个过滤器名称,以管道符(|)分隔。 |
<;两个链的筛选列表> | 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。 |
属性 | 支持 |
---|---|
首先于 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。 |
版本 | 说明 |
---|---|
5.3.6 | 增加 。 |
5.1.0 | 增加 和 。 |
5.0.0 | 增加 。 |
Exemple n°1 php://temp/maxmemory
Cette option facultative permet de définir la limite maximale de mémoire avant de commencer à utiliser des fichiers temporaires.
<?php // Set the limit to 5 MB. $fiveMBs = 5 * 1024 * 1024; $fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+'); 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/>
Exemple n°2 php://filter/resource=
Ce paramètre doit être situé à la fin et pointer vers le flux de données qui doit être filtré.
<?php /* 这简单等同于: readfile("http://www.example.com"); 实际上没有指定过滤器 */readfile("php://filter/resource= ?>
Exemple n°3 php://filter/read=
Ce paramètre prend un ou plusieurs noms de filtre séparés par le caractère barre verticale |
<?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= "couleur: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/>
Exemple n°4 php://filter/write=
Ce paramètre prend un ou plusieurs noms de filtre séparés par le caractère barre verticale |
<?php /* 这会通过 rot13 过滤器筛选出字符 "Hello World" 然后写入当前目录下的 example.txt */ file_put_contents ( "php://filter/write=string.rot13/resource=example.txt" , "Hello World" ); ?>
<span style="couleur: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>
Recommandations associées :
La soumission de la publication php apparaît Les variables d'entrée ont dépassé 1000
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!