downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

zlib://> <ftp://
[edit] Last updated: Fri, 10 Feb 2012

view this page in

php://

php://Accès aux divers flux I/O

Description

PHP fournit un nombre important de flux I/O qui permettent d'accéder aux flux d'entrée et de sortie de Php, à l'entrée standart, à l'entrée et la sortie des descripteurs de fichiers, aux flux représentant les fichiers temporaires en mémoire vive ou sur le disque, ainsi qu'aux filtres qui peuvent manipuler d'autres ressources de fichiers en lecture ou en écriture.

php://stdin, php://stdout et php://stderr

php://stdin, php://stdout et php://stderr permettent des accès directs aux flux d'entrée ou de sortie correspondant du processus PHP. Le flux représente une copie du descripteur de fichier, aussi, si vous ouvrez php://stdin et le fermez plus tard, vous ne fermez que votre copie du descripteur ; le flux actuel, référencé par STDIN n'est pas affecté. Notez que PHP avez un comportement relativement bogué jusqu'à la version PHP 5.2.1. Il est recommandé d'utiliser uniquement les constantes STDIN, STDOUT et STDERR au lieu d'ouvrir manuellement les flux en utilisant ces gestionnaires.

php://stdin est en lecture seule, alors que php://stdout et php://stderr sont en écriture seule.

php://input

php://input est un flux en lecture seule qui permet de lire des données brutes depuis la requête. Dans le cas de requêtes POST, il est préférable d'utiliser le flux php://input au lieu de la variable $HTTP_RAW_POST_DATA vu qu'elle ne dépend d'aucune directive de configuration du php.ini. De plus, dans les cas où $HTTP_RAW_POST_DATA n'est pas peuplé par défaut, il est potentiellement plus intéressant en terme de mémoire d'activer la directive always_populate_raw_post_data. php://input n'est pas disponible avec enctype="multipart/form-data".

Note: Un flux ouvert avec php://input ne peut être lu qu'une seule fois ; le flux ne supporte pas les opérations de rembobinage. Cependant, suivant l'implémentation du SAPI, il peut être possible d'ouvrir un autre flux php://input et recommencer à lire. Ceci n'est possible que si la requête des données a été sauvegardée. Typiquement, c'est le cas pour les requêtes POST, mais pas pour les autres méthodes comme PUT ou PROPFIND.

php://output

php://output est un flux en écriture seule qui permet d'écrire dans le mécanisme de buffer de sortie de la même façon que les fonctions print() et echo().

php://fd

php://fd permet un accès direct au descripteur de fichier fourni. Par exemple, php://fd/3 correspond aux descripteurs 3 du fichier.

php://memory et php://temp

php://memory et php://temp sont des flux en lecture/écriture qui permet de sauvegarder des données temporaires dans un gestionnaire de fichiers. La seule différence entre ces deux flux est que php://memory autorise la sauvegarde des données en mémoire, alors que php://temp utilisera un fichier temporaire une fois que la quantité de données sauvegardées aura dépassée une limite prédéfinie (par défaut, 2 Mo). L'endroit de stockage de ce fichier temporaire est déterminé de la même manière que pour la fonction sys_get_temp_dir().

La limite mémoire de php://temp peut être contrôlé en ajoutant /maxmemory:NN, où NN est la quantité de mémoire maximale à conserver en mémoire avant d'utiliser un fichier temporaire, en octets.

php://filter

php://filter est une sorte de gestionnaire prévu pour permettre l'application de filtres sur un flux au moment de l'ouverture. Ceci est très pratique avec des fonctions sur des fichiers toutes-en-un comme les fonctions readfile(), file() et file_get_contents() où il n'est pas opportun d'appliquer un filtre au flux avant d'avoir lu le contenu.

La cible de php://filter prend les paramètres suivants sous la forme de partie du chemin. Reportez-vous aux exemples spécifiques pour une utilisation correcte de ces paramètres.

php://filter parameters
Nom Description
resource=<flux à filtrer> Ce paramètre est requis. Il spécifie le flux que vous souhaitez filtrer.
read=<liste des filtres à appliquer à la lecture> Ce paramètre est optionnel. Un ou plusieurs noms de filtres peuvent être fournis ici, séparés par un caractère pipe (|).
write=<liste des filtres à appliquer à l'écriture> Ce paramètre est optionnel. Un ou plusieurs noms de filtres peuvent être fournis ici, séparés par un caractère pipe (|).
<liste de filtre à appliquer à la fois lors de la lecture et de l'écriture> Tous les filtres fournis sans être préfixés par read= ou write= seront appliqués à la fois lors de la lecture et lors de l'écriture.

Options

Résumé du gestionnaire (pour php://filter, reportez-vous au résumé du gestionnaire à filtrer)
Attribut Supporté
Restreint par allow_url_fopen Non
Restreint par allow_url_include php://input, php://stdin, php://memory et php://temp uniquement.
Autorise la lecture php://stdin, php://input, php://fd, php://memory et php://temp uniquement.
Autorise l'écriture php://stdout, php://stderr, php://output, php://fd, php://memory et php://temp uniquement.
Autorise l'ajout php://stdout, php://stderr, php://output, php://fd, php://memory et php://temp uniquement. (Équivalent à l'écriture)
Autorise à la fois la lecture et l'écriture php://fd, php://memory et php://temp uniquement.
Support de la fonction stat() php://memory et php://temp uniquement.
Support de la fonction unlink() Non
Support de la fonction rename() Non
Support de la fonction mkdir() Non
Support de la fonction rmdir() Non
Support de la fonction stream_select() php://stdin, php://stdout, php://stderr, php://fd et php://temp uniquement.

Historique

Version Description
5.3.6 php://fd a été ajouté.
5.1.0 php://memory et php://temp ont été ajoutés.
5.0.0 php://filter a été ajouté.

Exemples

Exemple #1 php://temp/maxmemory

Le paramètre optionnel autorise la configuration de la limitation mémoire avant que php://temp commence à utiliser un fichier temporaire.

<?php
// Définit la limite à 5 Mo.
$fiveMBs 1024 1024;
$fp fopen("php://temp/maxmemory:$fiveMBs"'r+');

fputs($fp"hello\n");

// Lit ce que nous venons d'écrire.
rewind($fp);
echo 
stream_get_contents($fp);
?>

Exemple #2 php://filter/resource=<flux à filtrer>

Ce paramètre doit se situer à la fin de votre spécification de php://filter et doit pointer sur le flux que vous souhaitez filtrer.

<?php
/* Ceci est équivalent à
  readfile("http://www.example.com");
  vu qu'aucun filtre n'est spécifié */

readfile("php://filter/resource=http://www.example.com");
?>

Exemple #3 php://filter/read=<liste de filtres à appliquer lors de la lecture>

Ce paramètre prend un ou plusieurs noms de filtres séparés par un caractère pipe |.

<?php
/* Ceci affichera le contenu complet de
  www.example.com en majuscule */
readfile("php://filter/read=string.toupper/resource=http://www.example.com");

/* Ceci fera la même chose que le précédent,
  mais encodera en ROT13 le résultat */
readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com");
?>

Exemple #4 php://filter/write=<liste des filtres à appliquer lors de l'écriture>

Ce paramètre prend un ou plusieurs noms de filtres séparés par un caractère pipe |.

<?php
/* Ceci va filtrer la chaîne "Hello World"
  via le filtre rot13, puis, écrit le résultat
  dans le fichier example.txt du dossier courant */
file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World");
?>


add a note add a note User Contributed Notes php://
There are no user contributed notes for this page.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites