检查"exec"是否被禁用

esq*_*qew 20 php exec

我可以使用PHP中的任何函数来检测exec函数是否可用吗?

Bre*_*ent 40

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

编辑:根据Ziagl的评论修正了爆炸.

  • 这可能有用或者可能没有 - 不幸的是,在我的情况下,我发现`ini_get()`与`exec`和其他文件系统函数一起出现在禁用函数列表中; 鉴于托管服务提供商可能担心在INI文件中公开信息,可能会出现这种情况. (3认同)
  • 适合我,但只有爆炸(','...而不是爆炸(','... ini_get字符串中没有空格 (2认同)

Dan*_*sor 13

以下功能更加强大.它处理disabled_functions函数名之间具有0或更多空格的值,检查suhosin补丁的黑名单设置,覆盖safe_mode并存储答案以供将来参考.

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;
}
Run Code Online (Sandbox Code Playgroud)