Flux d'entrée/sortie
- php://stdin
- php://stdout
- php://stderr
- php://output
- php://input
- php://filter (disponible depuis PHP 5.0.0)
- php://memory (disponible depuis PHP 5.1.0)
- php://temp (disponible depuis PHP 5.1.0)
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 instable 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.
Exemple #1 php:// et les filtres
<?php
/* Ceci est l'équivalent de :
readfile("http://www.example.com");
puisque aucun filtre n'est spécifié */
readfile("php://filter/resource=http://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 |.
Exemple #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=http://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=http://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 |.
Exemple #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 :
Résumé des gestionnaires (pour php://filter,
voyez le résumé du filtre)
| 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 |