Dadurch wird überprüft, ob exec verfügbar und aktiviert ist, BEVOR Sie versuchen, es auszuführen. Wenn Sie exec() ausführen und die Funktion nicht existiert oder deaktiviert ist, wird eine Warnung generiert. Abhängig von den Servereinstellungen, die möglicherweise an den Browser übertragen werden und fast immer eine Zeile in eine Protokolldatei schreiben =Leistungseinbußen.
// 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')
Was Sie eigentlich tun möchten, ist ini_get('disable_functions')
zu verwenden um herauszufinden, ob es für Sie verfügbar ist:
<?php
function exec_enabled() {
$disabled = explode(',', ini_get('disable_functions'));
return !in_array('exec', $disabled);
}
?>
Beantwortet auf Stackoverflow hier:Überprüfen Sie, ob "exec" deaktiviert ist, was tatsächlich von der PHP-Manpage zu stammen scheint:http://php.net/manual/en/function.exec.php#97187
Pfad
Wenn das obige wahr zurückgibt (Sie können exec() verwenden), aber PHP das Skript immer noch nicht auslösen kann, besteht eine gute Chance, dass Sie ein Pfadproblem für dieses Skript haben, testen Sie dies, indem Sie Folgendes tun:
print exec('which bash');
und versuchen Sie es dann
print exec('which ogr2ogr');
Dadurch wird überprüft, ob die Funktion tatsächlich funktioniert (Berechtigungen, Rechte usw.):
if(@exec('echo EXEC') == 'EXEC'){
echo 'exec works';
}