working passthru not from example ejecutar desde php exec

not - php exec vs passthru



Compruebe si "exec" está deshabilitado (5)

Existe una compilación de una línea de modo seguro, función y exec deshabilitado que utiliza algunas de las técnicas que se encuentran en varias publicaciones de SO.

Esto comprobará que exec esté disponible y habilitado ANTES de intentar ejecutarlo. Si ejecuta exec () y la función no existe o está deshabilitada, se generará una advertencia. Dependiendo de la configuración del servidor que pueda mostrarse en el navegador y casi siempre escribirá una línea en un archivo de registro = impacto 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'' ) ) != ''off'') ; if ($exec_enabled) { exec(''blah''); }

Esta pregunta ya tiene una respuesta aquí:

¿Hay alguna función en PHP que pueda usar para detectar si la función exec está disponible o no?


La siguiente función es más robusta. Trata el valor de disabled_functions que tiene 0 o más espacios entre los nombres de funciones, verifica la configuración de la lista negra del parche suhosin, cubre el modo safe_mode y almacena la respuesta para futuras referencias.

function is_exec_available() { static $available; if (!isset($available)) { $available = true; if (ini_get(''safe_mode'')) { $available = false; } else { $d = ini_get(''disable_functions''); $s = ini_get(''suhosin.executor.func.blacklist''); if ("$d$s") { $array = preg_split(''/,/s*/'', "$d,$s"); if (in_array(''exec'', $array)) { $available = false; } } } } return $available; }


Puede buscar en la configuración ini disable_functions para la función exec() .

if( false !== strpos(ini_get("disable_functions"), "exec") ) { // exec() is disabled

Solo para completar, tenga en cuenta que el Modo seguro de PHP también impone algunas restricciones a la función.


También debe comprobar si safe_mode está activo, ya que exec no está disponible si safe_mode está activado

function is_exec_available() { // Are we in Safe Mode if ( $safe_mode = ini_get( ''safe_mode'' ) && strtolower( $safe_mode ) != ''off'' ) return false; // Is shell_exec disabled? if ( in_array( ''exec'', array_map( ''trim'', explode( '','', ini_get( ''disable_functions'' ) ) ) ) ) return false; return true; }


<?php function exec_enabled() { $disabled = explode('','', ini_get(''disable_functions'')); return !in_array(''exec'', $disabled); } ?>

EDITAR: Se corrigió la explosión según el comentario de Ziagl.