Tím se zkontroluje, zda je exec dostupný a povolený PŘED pokusem o jeho spuštění. Pokud spustíte exec() a funkce neexistuje nebo je zakázána, vygeneruje se varování. V závislosti na nastavení serveru, které se může vykreslit do prohlížeče a téměř vždy zapíše řádek do souboru protokolu =zásah do výkonu.
// 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')
Co vlastně chcete udělat, je použít ini_get('disable_functions')
abyste zjistili, zda je pro vás k dispozici:
<?php
function exec_enabled() {
$disabled = explode(',', ini_get('disable_functions'));
return !in_array('exec', $disabled);
}
?>
Odpověď na stackoverflow zde:Zkontrolujte, zda není "exec" zakázáno, což ve skutečnosti vypadá, že pochází z manuálové stránky PHP:http://php.net/manual/en/function.exec.php#97187
Cesta
Pokud výše uvedené vrátí true (můžete použít exec()), ale PHP stále nemůže spustit skript, existuje velká šance, že máte problém s cestou pro tento skript, otestujte to takto:
print exec('which bash');
a pak to zkuste
print exec('which ogr2ogr');
Tím se zkontroluje, zda funkce skutečně funguje (oprávnění, práva atd.):
if(@exec('echo EXEC') == 'EXEC'){
echo 'exec works';
}