texto - Ejecutivo de PHP: compruebe si está habilitado o deshabilitado
string strip_tags (8)
Ejemplo:
if(strpos(ini_get(''disable_functions''),''ini_set'')===false)
@ini_set(''display_errors'',0);
¿Hay alguna manera de comprobar en un script php si se habilita o deshabilita el exec()
en un servidor?
Es un poco complicado encontrar la función exec
disponible hasta que, a menos que se verifiquen todas las posibilidades
1. function_exist(''exec'')
2. Escaneo a través de ini_get(''disabled_functions)
3.Comprobar safe_mode
habilitado
function is_shell_exec_available() {
if (in_array(strtolower(ini_get(''safe_mode'')), array(''on'', ''1''), true) || (!function_exists(''exec''))) {
return false;
}
$disabled_functions = explode('','', ini_get(''disable_functions''));
$exec_enabled = !in_array(''exec'', $disabled_functions);
return ($exec_enabled) ? true : false;
}
Esta función nunca arroja advertencias a menos que la función ini_get
no esté desactivada.
Este es un código feo que hice para detectar si una función está habilitada o no.
function is_enabled($f)
{
if($f==''ini_get'')return@ini_get(''a'')===false;
return(($l=@ini_get(''disable_functions''))===null||!is_callable($f)||!function_exists($f)||!in_array($f,array_map(''trim'',explode('','',$l)));
}
//Usage example:
print_r(is_enabled(''str_split''));//true or null if ini_get() is disabled
Esto verificará que el ejecutivo esté disponible y habilitado ANTES de intentar ejecutarlo. Si ejecuta exec () y la función no existe o está desactivada, se generará una advertencia. Dependiendo de la configuración del servidor que pueda mostrarse en el navegador, casi siempre escribirá una línea en un archivo de registro = golpe de rendimiento.
// 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''); }
Esto verificará si la función realmente funciona (permisos, derechos, etc.):
if(exec(''echo EXEC'') == ''EXEC''){
echo ''exec works'';
}
Supongo que está ejecutando esto en un servidor Linux.
Puede probar la función de ejecución ejecutando el siguiente script php:
exec("whoami", $ret);
echo $ret[0];
Esto devolverá el comando whoami.
Si se produce un error, es porque la función ejecutiva no se pudo ejecutar.
ini_get (''disable_functions'')
Lo que realmente quiere hacer es usar ini_get(''disable_functions'')
para averiguar si está disponible para usted:
<?php
function exec_enabled() {
$disabled = explode('','', ini_get(''disable_functions''));
return !in_array(''exec'', $disabled);
}
?>
Respondido en aquí: Compruebe si "exec" está deshabilitado , que en realidad parece provenir de la página de PHP Man: http://php.net/manual/en/function.exec.php#97187
Camino
Si lo anterior es verdadero (puede usar exec ()), pero PHP aún no puede activar el script, existe una buena probabilidad de que tenga un problema de ruta para ese script, pruebe esto haciendo lo siguiente:
print exec(''which bash'');
y luego prueba
print exec(''which ogr2ogr'');
if(function_exists(''exec'')) {
echo "exec is enabled";
}