Files
doc-fr/language/wrappers/php.xml
Sergey Panteleev 13822e448b Sync various parts with English (#140)
Co-authored-by: George Peter Banyard <girgias@php.net>
2021-12-22 15:30:43 +00:00

389 lines
13 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: fbba47c54e8d6d7af9e44a4cfab62b42a02ffd11 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="wrappers.php" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" role="noversion">
<refnamediv>
<refname>php://</refname>
<refpurpose>Accès aux divers flux I/O</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>
PHP fournit un nombre important de flux I/O qui permettent d'accéder
aux flux d'entrée et de sortie de PHP lui-même, aux descripteurs de fichiers
de l'entrée standard et des sorties standard et d'erreurs, à des flux représentant
des fichiers temporaires en mémoire vive ou sur le disque, ainsi qu'à des filtres
qui peuvent manipuler d'autres ressources de fichiers pendant la lecture ou l'écriture.
</para>
<refsect2 xml:id="wrappers.php.std">
<title>php://stdin, php://stdout et php://stderr</title>
<simpara>
<filename>php://stdin</filename>, <filename>php://stdout</filename> et
<filename>php://stderr</filename> permettent des accès directs aux flux d'entrée
ou de sortie correspondant du processus PHP. Le flux fait référence à une copie
du descripteur de fichier, ce qui signifie que si vous ouvrez <filename>php://stdin</filename>
et le fermez plus tard, vous ne fermez que votre copie du descripteur ; le
flux réellement référencé par <constant>STDIN</constant> n'est pas affecté.
Il est recommandé d'utiliser uniquement les constantes <constant>STDIN</constant>,
<constant>STDOUT</constant> et <constant>STDERR</constant> au lieu
d'ouvrir manuellement les flux en utilisant ces gestionnaires.
</simpara>
<simpara>
<filename>php://stdin</filename> est en lecture seule, alors que
<filename>php://stdout</filename> et <filename>php://stderr</filename> sont
en écriture seule.
</simpara>
</refsect2>
<refsect2 xml:id="wrappers.php.input">
<title>php://input</title>
<simpara>
<filename>php://input</filename> est un flux en lecture seule qui permet
de lire des données brutes depuis le corps de la requête.
<filename>php://input</filename> n'est pas disponible avec
<literal>enctype="multipart/form-data"</literal>.
</simpara>
</refsect2>
<refsect2 xml:id="wrappers.php.output">
<title>php://output</title>
<para>
<filename>php://output</filename> 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
<function>print</function> et
<function>echo</function>.
</para>
</refsect2>
<refsect2 xml:id="wrappers.php.fd">
<title>php://fd</title>
<simpara>
<filename>php://fd</filename> permet un accès direct au descripteur de fichier
spécifié. Par exemple, <filename>php://fd/3</filename> correspond au
descripteur de fichier numéro 3.
</simpara>
</refsect2>
<refsect2 xml:id="wrappers.php.memory">
<title>php://memory et php://temp</title>
<simpara>
<filename>php://memory</filename> et <filename>php://temp</filename>
sont des flux en lecture/écriture qui permettent de stocker des données
temporaires dans un gestionnaire de fichiers. La seule différence entre
ces deux flux est que <filename>php://memory</filename> stockera toujours
ses données en mémoire, alors que <filename>php://temp</filename> utilisera un
fichier temporaire une fois que la quantité de données enregistrées aura dépassé
une limite prédéfinie (par défaut, 2 Mo). L'emplacement
de ce fichier temporaire est déterminé de la même manière que pour
la fonction <function>sys_get_temp_dir</function>.
</simpara>
<simpara>
La limite mémoire de <filename>php://temp</filename> peut être contrôlée
en ajoutant <literal>/maxmemory:NN</literal>, où <literal>NN</literal> est
la quantité maximale de données à conserver en mémoire avant d'utiliser
un fichier temporaire, en octets.
</simpara>
</refsect2>
<refsect2 xml:id="wrappers.php.filter">
<title>php://filter</title>
<simpara>
<filename>php://filter</filename> est une sorte de gestionnaire prévu
pour permettre l'application de <link linkend="filters">filtres</link>
sur un flux au moment de son ouverture. Ceci est très pratique avec
des fonctions sur des fichiers toutes-en-un comme les fonctions
<function>readfile</function>, <function>file</function> et
<function>file_get_contents</function>, où il n'existe pas d'autre mécanisme
permettant d'appliquer un filtre au flux avant que le contenu ne soit lu.
</simpara>
<para>
La cible de <filename>php://filter</filename> prend les paramètres suivants
sous la forme de composantes de son chemin. Plusieurs filtres chaînés
peuvent être spécifiés en un seul chemin. Reportez-vous aux exemples
pour une utilisation correcte de ces paramètres.
</para>
<para>
<table>
<title>Paramètres de php://filter</title>
<tgroup cols="2">
<thead>
<row>
<entry>Nom</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<literal>resource=&lt;flux à filtrer&gt;</literal>
</entry>
<entry>
Ce paramètre est requis. Il spécifie le flux que vous souhaitez
filtrer.
</entry>
</row>
<row>
<entry>
<literal>read=&lt;liste des filtres à appliquer à la lecture&gt;</literal>
</entry>
<entry>
Ce paramètre est optionnel. Un ou plusieurs noms de filtres
peuvent être fournis ici, séparés par un caractère pipe (<literal>|</literal>).
</entry>
</row>
<row>
<entry>
<literal>write=&lt;liste des filtres à appliquer à l'écriture&gt;</literal>
</entry>
<entry>
Ce paramètre est optionnel. Un ou plusieurs noms de filtres
peuvent être fournis ici, séparés par un caractère pipe (<literal>|</literal>).
</entry>
</row>
<row>
<entry>
<literal>&lt;liste de filtre à appliquer à la fois lors de la lecture et de l'écriture&gt;</literal>
</entry>
<entry>
Tous les filtres fournis sans être préfixés par <literal>read=</literal>
ou <literal>write=</literal> seront appliqués à la fois lors de la
lecture et lors de l'écriture.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</refsect2>
</refsect1>
<refsect1 role="options"><!-- {{{ -->
&reftitle.options;
<para>
<table>
<title>
Résumé du gestionnaire (pour <literal>php://filter</literal>, reportez-vous
au résumé du gestionnaire à filtrer)
</title>
<tgroup cols="2">
<thead>
<row>
<entry>Attribut</entry>
<entry>Supporté</entry>
</row>
</thead>
<tbody>
<row>
<entry>Restreint par <link linkend="ini.allow-url-fopen">allow_url_fopen</link></entry>
<entry>Non</entry>
</row>
<row>
<entry>Restreint par <link linkend="ini.allow-url-include">allow_url_include</link></entry>
<entry>
<literal>php://input</literal>,
<literal>php://stdin</literal>,
<literal>php://memory</literal> et
<literal>php://temp</literal> uniquement.
</entry>
</row>
<row>
<entry>Autorise la lecture</entry>
<entry>
<literal>php://stdin</literal>,
<literal>php://input</literal>,
<literal>php://fd</literal>,
<literal>php://memory</literal> et
<literal>php://temp</literal> uniquement.
</entry>
</row>
<row>
<entry>Autorise l'écriture</entry>
<entry>
<literal>php://stdout</literal>,
<literal>php://stderr</literal>,
<literal>php://output</literal>,
<literal>php://fd</literal>,
<literal>php://memory</literal> et
<literal>php://temp</literal> uniquement.
</entry>
</row>
<row>
<entry>Autorise l'ajout</entry>
<entry>
<literal>php://stdout</literal>,
<literal>php://stderr</literal>,
<literal>php://output</literal>,
<literal>php://fd</literal>,
<literal>php://memory</literal> et
<literal>php://temp</literal> uniquement. (Équivalent à de l'écriture)
</entry>
</row>
<row>
<entry>Autorise à la fois la lecture et l'écriture</entry>
<entry>
<literal>php://fd</literal>,
<literal>php://memory</literal> et
<literal>php://temp</literal> uniquement.
</entry>
</row>
<row>
<entry>Support de la fonction <function>stat</function></entry>
<entry>
Non. Néanmoins <literal>php://memory</literal> et
<literal>php://temp</literal> supportent <function>fstat</function>.
</entry>
</row>
<row>
<entry>Support de la fonction <function>unlink</function></entry>
<entry>Non</entry>
</row>
<row>
<entry>Support de la fonction <function>rename</function></entry>
<entry>Non</entry>
</row>
<row>
<entry>Support de la fonction <function>mkdir</function></entry>
<entry>Non</entry>
</row>
<row>
<entry>Support de la fonction <function>rmdir</function></entry>
<entry>Non</entry>
</row>
<row>
<entry>Support de la fonction <function>stream_select</function></entry>
<entry>
<literal>php://stdin</literal>,
<literal>php://stdout</literal>,
<literal>php://stderr</literal>,
<literal>php://fd</literal> et
<literal>php://temp</literal> uniquement.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</refsect1> <!-- }}} -->
<refsect1 role="examples"><!-- {{{ -->
&reftitle.examples;
<example><!-- {{{ -->
<title>php://temp/maxmemory</title>
<para>
Ce paramètre optionnel permet de configurer la limite
mémoire avant que <filename>php://temp</filename> ne commence à utiliser
un fichier temporaire.
</para>
<programlisting role="php">
<![CDATA[
<?php
// Définit la limite à 5 Mo.
$fiveMBs = 5 * 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);
?>
]]>
</programlisting>
</example><!-- }}} -->
<example><!-- {{{ -->
<title>php://filter/resource=&lt;flux à filtrer&gt;</title>
<para>
Ce paramètre doit être placé à la fin de votre spécification
de <filename>php://filter</filename> et doit pointer sur le flux
que vous souhaitez filtrer.
</para>
<programlisting role="php">
<![CDATA[
<?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");
?>
]]>
</programlisting>
</example><!-- }}} -->
<example><!-- {{{ -->
<title>php://filter/read=&lt;liste de filtres à appliquer lors de la lecture&gt;</title>
<para>
Ce paramètre prend un ou plusieurs noms de filtres séparés par
un caractère pipe <literal>|</literal>.
</para>
<programlisting role="php">
<![CDATA[
<?php
/* Ceci affichera le contenu de
www.example.com entièrement en majuscules */
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 plus le résultat en ROT13 */
readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com");
?>
]]>
</programlisting>
</example><!-- }}} -->
<example><!-- {{{ -->
<title>php://filter/write=&lt;liste des filtres à appliquer lors de l'écriture&gt;</title>
<para>
Ce paramètre prend un ou plusieurs noms de filtres séparés par
un caractère pipe <literal>|</literal>.
</para>
<programlisting role="php">
<![CDATA[
<?php
/* Ceci va filtrer la chaîne "Hello World"
via le filtre rot13, puis écrire le résultat
dans le fichier example.txt du dossier courant */
file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World");
?>
]]>
</programlisting>
</example><!-- }}} -->
<example>
<title>php://memory et php://temp ne sont pas réutilisables</title>
<para>
<filename>php://memory</filename> et <filename>php://temp</filename>
ne sont pas réutilisables, c.-à-d. après que les flux ont été fermés il n'y a aucun moyen de les référer à nouveau.
</para>
<programlisting role="php">
<![CDATA[
file_put_contents('php://memory', 'PHP');
echo file_get_contents('php://memory'); // affiche rien
]]>
</programlisting>
</example>
</refsect1><!-- }}} -->
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->