Manuel PHP
Précédent | Annexe L. Liste des protocoles supportés | Suivant

# Flux d'entrée/sortie

PHP 3.0.13 et plus récent, `php://output` et `php://input` depuis PHP 4.3

- `php://stdin`

- `php://stdout`

- `php://stderr`

- `php://output`

- `php://input`

`php://stdin`, `php://stdout` et `php://stderr` donne accès au flux correspondant d'entrée ou de sortie du processus PHP.

`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://stdin` et `php://input` sont 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 gestionaire 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 L-2. php:// et les filtres

  `<?php /* Ceci est l'équivalent de : readfile("http://www.example.com"); puisqu'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 L-3. 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 L-4. 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é avec read= ou write= seront appliqué aux deux chaînes de filtres, en lecture et en écriture.

Tableau L-6. Résumé des gestionnaires (pour php://filter, voyez le résumé du filtre)

Attribut | Supporté
--- | ---
Limité par allow_url_fopen. | Non
Autorisé en lecture | php://stdin et php://input uniquement.
Autorisé en écriture | php://stdout, php://stderr et php://output uniquement.
Autorisé en ajout | php://stdout, php://stderr et php://output uniquement. (Equivalent à écrire)
Autorisé en lecture et écriture | Non. Ces gestionnaires sont unidirectionnels.
Supporte stat() | Non
Supporte unlink() | Non
Supporte rename() | Non
Supporte mkdir() | Non
Supporte rmdir() | Non

Précédent | Sommaire | Suivant
FTP et FTPS | Niveau supérieur | Flux compressés