Hướng dẫn php check if function is disabled - php kiểm tra xem chức năng có bị tắt không

Có bất kỳ chức năng nào trong PHP mà tôi có thể sử dụng để phát hiện có chức năng exec có sẵn không?

Hỏi ngày 14 tháng 10 năm 2010 lúc 22:31Oct 14, 2010 at 22:31

Hướng dẫn php check if function is disabled - php kiểm tra xem chức năng có bị tắt không

1


Chỉnh sửa: Đã sửa lỗi nổ theo nhận xét của Ziagl.

Đã trả lời ngày 14 tháng 10 năm 2010 lúc 22:37Oct 14, 2010 at 22:37

Hướng dẫn php check if function is disabled - php kiểm tra xem chức năng có bị tắt không

BrentbrentBrent

Phù hiệu vàng 23K1044 Huy hiệu bạc49 Huy hiệu đồng10 gold badges44 silver badges49 bronze badges

5

Chức năng sau đây mạnh mẽ hơn. Nó liên quan đến giá trị disabled_functions có 0 hoặc nhiều khoảng trắng giữa các tên hàm, kiểm tra cài đặt danh sách đen của Suhosin Patch, bao gồm safe_mode và lưu trữ câu trả lời để tham khảo trong tương lai.

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;
}

Đã trả lời ngày 19 tháng 10 năm 2012 lúc 18:45Oct 19, 2012 at 18:45

Hướng dẫn php check if function is disabled - php kiểm tra xem chức năng có bị tắt không

1

Bạn có thể tìm kiếm cài đặt INI

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;
}
0 cho hàm
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;
}
1.

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

Chỉ để hoàn thiện, lưu ý rằng chế độ an toàn PHP cũng đặt một số hạn chế đối với chức năng.

Đã trả lời ngày 14 tháng 10 năm 2010 lúc 22:41Oct 14, 2010 at 22:41

Svenssvenssvens

11.2k6 Huy hiệu vàng36 Huy hiệu bạc55 Huy hiệu Đồng6 gold badges36 silver badges55 bronze badges

2

Bạn cũng cần kiểm tra xem Safe_mode có hoạt động hay không vì EXEC không khả dụng nếu Safe_Mode bật

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;

}

Đã trả lời ngày 11 tháng 11 năm 2011 lúc 13:44Nov 11, 2011 at 13:44

Việc biên dịch một dòng của chế độ an toàn, chức năng tồn tại và thực thi bị vô hiệu hóa bằng một số kỹ thuật được tìm thấy trên các bài đăng khác nhau.

Điều này sẽ kiểm tra xem Exec có sẵn và được bật trước khi cố gắng chạy nó không. Nếu bạn chạy EXEC () và hàm không tồn tại hoặc bị vô hiệu hóa, cảnh báo sẽ được tạo. Tùy thuộc vào cài đặt máy chủ có thể hiển thị cho trình duyệt và sẽ luôn luôn viết một dòng vào tệp nhật ký = hiệu suất nhấn.

// 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'); }

Đã trả lời ngày 13 tháng 3 năm 2013 lúc 14:44Mar 13, 2013 at 14:44

Lance Cleveland ClevelandLance Cleveland

3.0781 Huy hiệu vàng32 Huy hiệu bạc35 Huy hiệu Đồng1 gold badge32 silver badges35 bronze badges

Hiển thị các chức năng bị vô hiệu hóa bằng ini_get.


        echo ini_get('disable_functions');
        #sample output: date,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
?>

Danh sách các chức năng PHP bị vô hiệu hóa từ tệp cấu hình.

$ grep disable_functions /etc/php/7.4/apache2/php.ini
disable_functions = date,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,