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 
    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);
    ?>

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