Cela vérifiera que exec est disponible et activé AVANT d'essayer de l'exécuter. Si vous exécutez exec() et que la fonction n'existe pas ou est désactivée, un avertissement sera généré. Selon les paramètres du serveur, le rendu peut être rendu au navigateur et écrira presque toujours une ligne dans un fichier journal =impact sur les performances.
// Exec function exists.
// Exec is not disabled.
// Safe Mode is not on.
$exec_enabled =
function_exists('exec') &&
!in_array('exec', array_map('trim', explode(', ', ini_get('disable_functions')))) &&
strtolower(ini_get('safe_mode')) != 1
;
if($exec_enabled) { exec('blah'); }
if(function_exists('exec')) {
echo "exec is enabled";
}
ini_get('disable_functions')
Ce que vous voulez réellement faire, c'est utiliser ini_get('disable_functions')
pour savoir s'il est disponible pour vous :
<?php
function exec_enabled() {
$disabled = explode(',', ini_get('disable_functions'));
return !in_array('exec', $disabled);
}
?>
Répondu sur stackoverflow ici :Vérifiez si "exec" est désactivé, ce qui semble provenir de la page PHP Man :http://php.net/manual/en/function.exec.php#97187
Chemin
Si ce qui précède renvoie vrai (vous pouvez utiliser exec()), mais que PHP ne peut toujours pas déclencher le script, il y a de fortes chances que vous ayez un problème de chemin pour ce script, testez ceci en faisant :
print exec('which bash');
puis essayez
print exec('which ogr2ogr');
Cela vérifiera si la fonction fonctionne réellement (autorisations, droits, etc.) :
if(@exec('echo EXEC') == 'EXEC'){
echo 'exec works';
}