# exec

(PHP 4, PHP 5, PHP 7, PHP 8)

exec — Exécute un programme externe

### Description

exec(string `$command`, array `&$output` = `null`, int `&$result_code` = `null`): string|false

exec() exécute la commande `command`.

### Liste de paramètres

`command`

  La commande à exécuter.

`output`

  Si l'argument `output` est présent, alors ce tableau sera rempli par les lignes retournées par la commande. Les espaces de début et de fin de chaîne, comme `\n`, ne seront pas inclus dans ce tableau. Il faut noter que si ce tableau contient des éléments, exec() ajoutera les nouvelles lignes à la fin du tableau. Si vous ne voulez pas que les nouveaux éléments soient concaténés, utilisez la fonction unset() avec ce tableau avant de le passer à exec().

`result_code`

  Si l'argument `result_code` est présent en plus du tableau `output`, alors le statut de retour d'exécution sera inscrit dans cette variable.

### Valeurs de retour

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 passthru().

Retourne `false` en cas d'erreur.

Pour récupérer la sortie de la commande exécutée, assurez-vous de définir et d'utiliser le paramètre `output`.

### Erreurs / Exceptions

Émet une alerte `E_WARNING` si exec() ne peut pas exécuter la commande `command`.

Lève une exception ValueError si `command` est vide ou contient des octets nuls.

### Historique

Version | Description
--- | ---
8.0.0 | Si `command` est vide ou contient des octets nuls, exec() lève désormais une exception ValueError. Précédemment, une alerte `E_WARNING` était émise et retournait `false`.

### Exemples

Exemple #1 Exemple avec exec()

`<?php
// Affiche le nom d'utilisateur qui fait tourner le processus php/http
// (sur un système ayant "whoami" dans le chemin d'exécutables)
$output=null;
$retval=null;
exec('whoami', $output, $retval);
echo "Returned with status $retval and output:\n";
print_r($output);
?>`

Résultat de l'exemple ci-dessus est similaire à :

    Returned with status 0 and output:
    Array
    (
        [0] => cmb
    )

### Notes

Avertissement

Si des données provenant des utilisateurs ont la permission d'être passées à cette fonction, utilisez escapeshellarg() ou escapeshellcmd() pour s'assurer que les utilisateurs ne peuvent pas amener le système à exécuter des commandes arbitraires.

> Note:

> Si un programme est démarré avec cette fonction et qu'il tourne en arrière plan, la sortie du programme doit être redirigée vers un fichier, ou un autre flux de sortie. À défaut, PHP sera bloqué jusqu'à la fin de l'exécution du programme.

> Note:

> Sur Windows exec() démarrera d'abord cmd.exe pour exécuter la commande. Si vous voulez démarrer un programme externe sans exécuter cmd.exe utilisez proc_open() en définissant l'option `bypass_shell`.

### Voir aussi

- system() - Exécute un programme externe et affiche le résultat
- passthru() - Exécute un programme externe et affiche le résultat brut
- escapeshellcmd() - Protège les caractères spéciaux du Shell
- pcntl_exec() - Exécute le programme indiqué dans l'espace courant de processus
- les guillemets obliques