1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.9 $ -->
<reference id="ref.exec">
<title>Exécution de programmes externes</title>
<titleabbrev>Exécution de programmes</titleabbrev>
<partintro>
<simpara>
Ces fonctions fournissent la possibilité de passer directement des commandes
au système, mais aussi de protéger le système des commandes passées.
Ces fonctions sont complétées par l'opérateur
<link linkend="language.operators.execution">guillemets obliques</link>.
</simpara>
</partintro>
<refentry id="function.escapeshellarg">
<refnamediv>
<refname>escapeshellarg</refname>
<refpurpose>
Echappe une chaîne de caractères pour qu'elle soit
utilisée en ligne de commande.
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>string</type><methodname>escapeshellarg</methodname>
<methodparam><type>string</type><parameter>arg</parameter></methodparam>
</methodsynopsis>
<para>
<function>escapeshellarg</function> ajoute des guillemets simples
autour des chaînes de caractères, et ajoute des
guillemets puis échappe les guillemets simples de la
chaîne. Cela permet de faire passer directement une
chaîne comme argument shell, tout en assurant un
maximum de sécurité. <function>escapeshellarg</function>
doit être utilisée pour traiter individuellement chacun des arguments
à passer au shell. Les fonctions shell sont
<function>exec</function>, <function>system</function> et
les opérateurs
<link linkend="language.operators.execution">guillemets obliques</link>.
Une utilisation typique est :
</para>
<para>
<informalexample>
<programlisting role="php">
<?php
system("ls ".escapeshellarg($dir));
?>
</programlisting>
</informalexample>
</para>
<para>
Voir aussi
<function>exec</function>,
<function>popen</function>,
<function>system</function> et
les opérateurs
<link linkend="language.operators.execution">guillemets obliques</link>.
</para>
</refsect1>
</refentry>
<refentry id="function.escapeshellcmd">
<refnamediv>
<refname>escapeshellcmd</refname>
<refpurpose>Echappe les méta-caractères Shell.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>string</type><methodname>escapeshellcmd</methodname>
<methodparam><type>string</type><parameter>command</parameter></methodparam>
</methodsynopsis>
<para>
<function>escapeshellcmd</function> échappe tous les
caractères de la chaîne <parameter>command</parameter>
qui pourraient avoir une signification spéciale dans une
commande shell. Cette fonction permet de s'assurer que la commande sera
correctement passée à l'exécuteur de commande shell
<function>exec</function> et <function>system</function>, ou encore
à
<link linkend="language.operators.execution">guillemets obliques</link>.
Généralement, cette fonction est utilisée comme ceci :
</para>
<para>
<informalexample>
<programlisting role="php">
<?php
system(escapeshellcmd($cmd));
?>
</programlisting>
</informalexample>
</para>
<para>
Voir aussi
<function>exec</function>,
<function>popen</function>,
<function>system</function>, et
les opérateurs
<link linkend="language.operators.execution">guillemets obliques</link>.
</para>
</refsect1>
</refentry>
<refentry id="function.exec">
<refnamediv>
<refname>exec</refname>
<refpurpose>Exécute un programme externe.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>string</type><methodname>exec</methodname>
<methodparam><type>string</type><parameter>command</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>array
</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>return_var</parameter></methodparam>
</methodsynopsis>
<para>
<function>exec</function> éxecute la commande
<parameter>command</parameter>, mais ne renvoie rien comme retour,
hormis la dernière ligne du résultat de la
commande. Pour exécuter une commande et obtenir le
résultat sans aucun traitement, il faut utiliser la
fonction <function>passthru</function>.
</para>
<para>
Si l'argument <parameter>array</parameter> est présent,
alors ce tableau sera rempli par les lignes retournées par
la commande. Il faut noter que si ce tableau contient des
éléments, <function>exec</function> ajoutera
les nouvelles lignes à la fin du tableau. Si vous ne
voulez pars que les nouveaux éléments soient
concaténés, utilisez la fonction
<function>unset</function> avec ce tableau avant
de le passer à <function>exec</function>.
</para>
<para>
Si l'argument <parameter>return_var</parameter> est présent
en plus du tableau <parameter>array</parameter>, alors de statut
de retour d'exécution sera inscrit dans cette variable.
</para>
<para>
Notez que si vous allez fournir des commandes qui proviennent
d'un utilisateur, il est avisé d'utiliser la fonction
<function>escapeshellcmd</function> pour s'assurer que
l'utilisateur n'essaie pas de profiter des caractères
spéciaux pour tromper le système.
</para>
<para>
Voir aussi <function>system</function>,
<function>passthru</function>, <function>popen</function>,
<function>escapeshellcmd</function>, et les opérateurs
<link linkend="language.operators.execution">guillemets obliques</link>.
</para>
</refsect1>
</refentry>
<refentry id="function.passthru">
<refnamediv>
<refname>passthru</refname>
<refpurpose>
Exécute un programme externe et affiche le résultat brut.
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>void</type><methodname>passthru</methodname>
<methodparam><type>string</type><parameter>command</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>return_var</parameter></methodparam>
</methodsynopsis>
<para>
La fonction <function>passthru</function> est similaire
à la fonction <function>exec</function> car les
deux exécutent la commande <parameter>command</parameter>.
Si l'argument <parameter>return_var</parameter> est présent,
le code de statut de réponse UNIX y sera placé.
Cette fonction doit être utilisée de préférence
aux commandes <function>exec</function> ou <function>system</function>
lorsque le résultat attendu est de type binaire, et
doit être passé tel quel à un navigateur.
Une utilisation classique de cette fonction est l'exécution
de l'utilitaire pbmplus qui peut retourner une image. En fixant
le résultat du contenu (Content-Type) à
"image/gif" puis en appelant pbmplus pour obtenir
une image gif, vous pouvez créer des scripts PHP qui
retourne des images.
</para>
<para>
Voir aussi
<function>exec</function>,
<function>system</function>,
<function>popen</function>,
<function>escapeshellcmd</function>,
et les opérateurs
<link linkend="language.operators.execution">guillemets obliques</link>.
</para>
</refsect1>
</refentry>
<refentry id="function.system">
<refnamediv>
<refname>system</refname>
<refpurpose>
Exécute un programme externe et affiche le résultat.
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<methodsynopsis>
<type>string</type><methodname>system</methodname>
<methodparam><type>string</type><parameter>command</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>return_var</parameter></methodparam>
</methodsynopsis>
<para>
<function>system</function> est la version PHP de la fonction C
qui exécute la commande <parameter>command</parameter> et
retourne le résultat. Si une variable est fournie comme
second argument, alors le code de statut de la commande y sera
affecté.
</para>
<para>
Notez que si vous allez fournir des commandes qui proviennent
d'un utilisateur, il est avisé d'utiliser la fonction
<function>escapeshellcmd</function> pour s'assurer que
l'utilisateur n'essaie pas de profiter des caractères
spéciaux pour tromper le système.
</para>
<para>
<function>system</function> essaie automatiquement de vider
les tampons du serveur web après chaque ligne de
résultat PHP, lorsque ce dernier fonctionne comme un module.
</para>
<para>
<function>system</function> retourne la dernière ligne du
retour, en cas de succès, et <literal>FALSE</literal> en
cas d'échec.
</para>
<para>
Si vous devez exécuter une commande et
récupérer tout le résultat sans aucune
intervention, utilisez la fonction <function>passthru</function>.
</para>
<para>
Voir aussi
<function>exec</function>,
<function>passthru</function>,
<function>popen</function>,
<function>escapeshellcmd</function> et
les opérateurs
<link linkend="language.operators.execution">guillemets obliques</link>.
</para>
</refsect1>
</refentry>
</reference>
<!-- 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:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
|