Questo verificherà che exec sia disponibile e abilitato PRIMA di tentare di eseguirlo. Se esegui exec() e la funzione non esiste o è disabilitata, verrà generato un avviso. A seconda delle impostazioni del server che possono eseguire il rendering sul browser e scriveranno quasi sempre una riga in un file di registro =prestazioni compromesse.
// 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')
Quello che vuoi veramente fare è usare ini_get('disable_functions')
per scoprire se è disponibile per te:
<?php
function exec_enabled() {
$disabled = explode(',', ini_get('disable_functions'));
return !in_array('exec', $disabled);
}
?>
Risposta su StackOverflow qui:controlla se "exec" è disabilitato, che in realtà sembra provenire dalla pagina Man di PHP:http://php.net/manual/en/function.exec.php#97187
Percorso
Se quanto sopra restituisce true (puoi usare exec()), ma PHP non può ancora attivare lo script, c'è una buona probabilità che tu abbia un problema di percorso per quello script, prova questo facendo:
print exec('which bash');
e poi prova
print exec('which ogr2ogr');
Questo verificherà se la funzione funziona effettivamente (autorizzazioni, diritti, ecc.):
if(@exec('echo EXEC') == 'EXEC'){
echo 'exec works';
}