Exécute une commande en ligne de commande et retourne toutes les lignes de résultat.
Finit généralement par un retour à la ligne \n
, effectuer un trim
avant de tester le résultat.
<?php
$aFiles = explode("\n", trim(shell_exec("ls")));
On peut également utiliser les backticks `...`
.
Le contenu des backticks est parsé, on peut donc y mettre des variables (`ls $path`
), en revanche il n’est pas possible de concaténer / appeler des fonctions avec, contrairement à shell_exec
.
<?php
$aFiles = explode("\n", trim(`ls`));
Exécute une commande en ligne de commande et retourne la dernière ligne de résultat.
<?php
$file exec("ls");
Peut également récupérer l’ensemble des lignes de résultat ainsi que le code retour du processus (pointeurs).
<?php
exec("ls", $output, $status);
Pour ne lire que la sortie erreur:
cmd 2>&1 1>/dev/null
cmd 2>&1 1>NUL
Exécute une commande en ligne de commande et affiche le résultat directement.
passthru
permet de récupérer du contenu de type binaire, il n’est pas convertit en chaîne de caractères.
<?php
passthru("ls");
Exécute une commande en ligne de commande, affiche le résultat et récupère la dernière ligne ainsi que le code retour (pointeur).
<?php
$last_line = system('ls', $status);
Crée un processus en effectuant un fork de la commande fournie.
Cela permet de déclancher un script asynchrone sous Windows.
Sous Linux, il suffit de déclencher le processus en fond et de ne pas récupérer le résultat.
<?php
// Script asynchrone Linux
exec('php example.php >/dev/null 2>&1 &');
<?php
// Script asynchrone Windows
popen('start php example.php', 'r');
Exécute une chaîne de caractères en tant que script PHP.
Peut présenter un risque de sécurité.
<?php
$str = 'echo "hello"';
eval($str); # Affiche hello
Retourne le numéro de processus de PHP
<?php
$pid = getmypid();
Retourne le type d’interface utilisée.
Permet de tester si le script est utilisé dans le terminal ou via un serveur web.
<?php
if(php_sapi_name() == 'cli') {
// ...
}
Valeur retournée:
apache2handler
cli
$argv
contient la liste des arguments passés au script.
$argc
contient le nombre d’argument passés au script.
$ php index.php test=1
<?php
var_dump($argv); # Array( [0]=>index.php [1]=>test=1 )
var_dump($argc); # 2
Permet de récupérer une ou des options passées au script.
Si la lettre est suivit de deux-points :
, récupère également la valeur de l’option.
$ php index.php -a=EXEMPLE -b
<?php
print_r(getopt('a')); # Array( a => )
print_r(getopt('a:')); # Array( a => EXEMPLE )
<?php
function usage() {
global $argv;
echo 'Usage : ' . $argv[0] . ' -a=VALUE [ -b ] [ -e=GEO_xx ]' . chr(10);
echo ' -a=[VALUE] : Lorem ipsum' . chr(10);
echo ' -b : Dolor sit' . chr(10);
echo ' -e=[GEO_xx|GES_xx] : Amet' . chr(10);
}
$argoptions = getopt('a:be:');
// Vérifier les options
if(!isset($argoptions['a'])) {
usage();
die;
}
// Effectuer le traitement demandé
print_r($argoptions);
Affiche un message dans le terminal et attend une réponse de l’utilisateur.
La librairie readline
n’est pas disponible sous Windows, il est nécessaire de créer sa propre fonction.
<?php
if(!function_exists('readline')) {
function readline($str) {
echo $str;
return stream_get_line(STDIN, 1024, PHP_EOL);
}
}
$line = readline("Nom : ");
echo 'Vous avez écrit "' . $line . '"';