¿Hay alguna forma de comprobar en un script php si exec()
está habilitado o deshabilitado en un servidor?PHP exec: compruebe si está habilitado o deshabilitado
Respuesta
if(function_exists('exec')) {
echo "exec is enabled";
}
¡funciona, gracias! –
Esto es incorrecto: solo detectará si la función está disponible. La mayoría de los servidores lo desactivarán a través de INI, lo que significa que la función aún estará presente, pero emitirá una advertencia cuando se ejecute y no hará nada. Ver esta respuesta: http://stackoverflow.com/questions/3938120/check-if-exec-is-disabled – pospi
@pospi Eso es una tontería; 'function_exists()' también verifica si una función está deshabilitada - [prueba] (http://lxr.php.net/xref/PHP_5_4/Zend/zend_builtin_functions.c#1349) –
Esto comprobará si la función funciona realmente (permisos, derechos, etc.):
if(exec('echo EXEC') == 'EXEC'){
echo 'exec works';
}
Esta es en realidad una mejor respuesta :-) –
pero aún arrojará un error de nivel de advertencia. – Umbrella
Como @Umbrella dijo, definitivamente arrojará advertencias – Thamaraiselvam
Esto Exec compruebe que 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'); }
tenga en cuenta que - ini_get ('safe_mode') puede devolver no solo" off " , pero también "" (cadena vacía) –
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')[email protected]_get('a')===false;
return(([email protected]_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
ini_get ('disable_functions')
Lo que realmente quiere hacer es utilizar 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);
}
?>
contestadas en StackOverflow aquí: Check if "exec" is disabled, que en realidad parece provenir de la página de PHP Man: http://php.net/manual/en/function.exec.php#97187
Ruta
Si las anteriores declaraciones de verdaderos (se puede utilizar exec()), pero PHP todavía no puede desencadenar el guión hay una buena probabilidad de que usted tiene un problema de ruta de ese guión, probar esto haciendo:
print exec('which bash');
y luego tratar
print exec('which ogr2ogr');
estoy asumiendo que está ejecutando esto en un servidor Linux.
podría probar la función exec ejecutando el siguiente script PHP:
exec("whoami", $ret);
echo $ret[0];
Esto devolverá el comando whoami.
Si se produce un error, es porque no se pudo ejecutar la función de ejecución.
Ejemplo:
if(strpos(ini_get('disable_functions'),'ini_set')===false)
@ini_set('display_errors',0);
Es un poco difícil de encontrar exec
función disponible hasta menos de comprobar todas las posibilidades
1. function_exist('exec')
2.Scanning través ini_get('disabled_functions)
3.Comprobación safe_mode
permitió
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 lanza advertencias a menos ini_get
función no inhabilitada.
- 1. Compruebe si "exec" está deshabilitado
- 2. Servidor SQL: verifique si un activador está habilitado o deshabilitado.
- 3. ¿Cómo verificar programáticamente si el hotspot está habilitado o deshabilitado?
- 4. Compruebe si el tiempo frontal está habilitado en el dispositivo
- 5. Compruebe si Javascript está habilitado (Serverside) con Rails
- 6. ¿Cómo comprobar si PHP mail() está habilitado?
- 7. compruebe si un dominio está disponible o no usando PHP?
- 8. Comprobando si javascript está habilitado
- 9. ¿Cómo redirigir si javaScript está deshabilitado?
- 10. Determinar si el módulo Magento está habilitado
- 11. ¿Cómo comprobar si NFC está habilitado o no en Android?
- 12. Suprimir enviar evento/botón Enviar habilitado solo si javascript está deshabilitado
- 13. Compruebe si el controlador MongoDB PHP está instalado
- 14. compruebe si NSNumber está vacío
- 15. ¿Cómo comprobar si bluetooth está habilitado programáticamente?
- 16. Detectando si java está instalado y habilitado con javascript
- 17. ¿Cómo detectar si Vista UAC está habilitado?
- 18. ¿Cómo comprobar si javascript está deshabilitado?
- 19. Compruebe si un script php todavía se está ejecutando
- 20. iOS - detectando si Game Center está deshabilitado
- 21. Buscar si un cuadro de texto está deshabilitado o no usando jquery
- 22. Jquery seleccionar todo si no está deshabilitado
- 23. Detecta si HTC "arranque rápido" está habilitado
- 24. Por qué atribuir "deshabilitado" pero no "habilitado"
- 25. Compruebe si una matriz está vacía
- 26. Compruebe si NSDate contiene una fecha o está vacía
- 27. Compruebe si la casilla está marcada o no - ASP.NET
- 28. Compruebe si el socket está conectado o no
- 29. Python: compruebe si un archivo está vacío o no
- 30. Compruebe si la matriz está vacía o nula
¿Qué quiere decir con * "habilitado o deshabilitado" *? –