Flux d'entrée/sortie
- /path/to/file.ext
- relative/path/to/file.ext
- fileInCwd.ext
- C:/path/to/winfile.ext
- C:\path\to\winfile.ext
- \\smbserver\share\path\to\winfile.ext
- file:///path/to/file.ext
php://stdin, php://stdout et php://stderr donnent accès au flux correspondants d'entrée ou de sortie du processus PHP. Le flux représente un descripteur dupliqué du fichier, donc, si vous ouvrez php://stdin et que vous le fermez plus tard, vous fermez uniquement le descripteur, le flux référencé par STDIN ne sera pas affecté. Notez que le comportement de PHP à ce sujet est relativement bogué dans les versions antérieures à 5.2.1. Il est recommandé d'utiliser simplement les constantes STDIN, STDOUT et STDERR au lieu d'ouvrir manuellement les flux en utilisant ces gestionnaires.
php://output vous permet d'écrire dans le buffer de sortie, de la même manière que print() et echo().
php://input permet de lire des données POST bruts. C'est moins gourmand en mémoire que $HTTP_RAW_POST_DATA et il n'y a pas de directive spéciale dans php.ini. php://input n'est pas disponible avec enctype="multipart/form-data".
php://stdin et php://input sont en lecture seule, tandis que php://stdout, php://stderr et php://output sont en écriture seule.
php://filter est une sorte de méta-gestionnaire, prévu pour qui permet l'utilisation de filtre avec les données d'entrée au moment du démarrage du script. C'est pratique avec des fonctions compactes comme readfile(), file() et file_get_contents() où il n'y a pas d'opportunité d'appliquer un filtre aux données lues.
Le gestionnaire de php://filter prend les 'paramètres' suivants dans le 'chemin'.
- 
    /resource=<flux à filtrer> (obligatoire) Ce paramètre doit être situé à la fin de votre chaîne php://filter et doit pointer sur le flux à filtrer. Example#1 php:// et les filtres <?php
 /* Ceci est l'équivalent de :
 readfile("https://www.example.com");
 puisque aucun filtre n'est spécifié */
 readfile("php://filter/resource=https://www.example.com");
 ?>
- 
    /read=<liste de filtres de la chaîne de lecture> (optionnel) Ce paramètre prend un ou plusieurs noms de filtres, séparés par le caractère pipe |. Example#2 php:// et filtres de lecture <?php
 /* Cette ligne va afficher le contenu de
 www.example.com tout en majuscule */
 readfile("php://filter/read=string.toupper/resource=https://www.example.com");
 /* Cela va faire la même chose que ci-dessus, mais en plus,
 le résultat sera chiffré en ROT13 */
 readfile("php://filter/read=string.toupper|string.rot13/resource=https://www.example.com");
 ?>
- 
    /write=<liste de filtres de la chaîne d'écriture> (optionnel) Ce paramètre prend un ou plusieurs noms de filtres, séparés par le caractère pipe |. Example#3 php:// et filtres d'écritures <?php
 /* Cette ligne va filtrer la chaîne "Bonjour le monde"
 avec le filtre rot13, puis écrire le résultat dans
 le fichier exemple.txt du dossier courant */
 file_put_contents("php://filter/write=string.rot13/resource=exemple.txt","Bonjour le monde");
 ?>
- /<liste de filtres des deux chaînes> (optionnel) Tous les filtres qui ne sont pas préfixés avec read= ou write= seront appliqués aux deux chaînes de filtres, en lecture et en écriture.
Le gestionnaire php://memory stocke les données en mémoire. php://temp fonctionne de la même façon, mais utilise des fichiers temporaires pour stocker les données lorsqu'une certaine limite mémoire est atteinte (par défaut, 2 Mo).
Le gestionnaire php://temp prend les paramètres suivants, qui sont les parties du chemin :
- 
    /maxmemory:<nombre d'octets> (optionnel). Ce paramètre permet de changer la valeur de la limite mémoire (lorsque les données sont déplacées vers un fichier temporaire). <?php
 $fiveMBs = 5 * 1024 * 1024;
 $fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+');
 fputs($fp, "Bonjour\n");
 // lecture de ce que nous avons écrit
 rewind($fp);
 echo stream_get_contents($fp);
 ?>
| Attribut | Supporté | 
|---|---|
| Limité par allow_url_fopen | Non | 
| Limité par allow_url_include | php://input, php://stdin, php://memory et php://temp uniquement. | 
| Autorisé en lecture | php://stdin, php://input, php://memory et php://temp uniquement. | 
| Autorisé en écriture | php://stdout, php://stderr, php://output, php://memory et php://temp uniquement. | 
| Autorisé en ajout | php://stdout, php://stderr, php://output, php://memory et php://temp uniquement. (Equivalent à écrire) | 
| Autorisé en lecture et écriture | php://memory et php://temp uniquement. | 
| Supporte stat() | php://memory et php://temp uniquement. | 
| Supporte unlink() | Non | 
| Supporte rename() | Non | 
| Supporte mkdir() | Non | 
| Supporte rmdir() | Non |