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 :
-
/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 |