Có chức năng nào trong PHP mà tôi có thể sử dụng để phát hiện chức năng exec
có sẵn không?Kiểm tra xem "exec" có bị vô hiệu hóa
Trả lời
<?php
function exec_enabled() {
$disabled = explode(',', ini_get('disable_functions'));
return !in_array('exec', $disabled);
}
?>
CHỈNH SỬA: Cố định phát nổ theo nhận xét của Ziagl.
Điều này trả về 'true' nếu' exec' được kích hoạt. –
đó là lý do tại sao chức năng được gọi là exec_enabled, nó chỉ không chính xác những gì ông yêu cầu. – UltimateBrent
điều này có thể hoạt động hoặc có thể không - không may, trong trường hợp của tôi, tôi thấy rằng 'ini_get()' nằm trong danh sách các chức năng bị vô hiệu hóa cùng với các hàm 'exec' và các hệ thống tệp khác; một tình huống có thể xảy ra, do các nhà cung cấp dịch vụ lưu trữ có thể lo ngại về việc tiết lộ thông tin trong tệp INI. –
Bạn có thể tìm kiếm cài đặt ini disable_functions
cho chức năng exec()
.
if(false !== strpos(ini_get("disable_functions"), "exec")) {
// exec() is disabled
Chỉ để hoàn thành, lưu ý rằng PHP Safe Mode cũng đặt một số hạn chế đối với chức năng.
Cách quá chậm như tôi thấy :) – svens
Điều này sẽ trả về câu trả lời sai nếu một hàm như 'shell_exec' đã được đặt trong' disable_functions' nhưng 'exec' không có. Tốt nhất để sử dụng phát nổ hoặc regex để đảm bảo nó khớp hoàn chỉnh – webbiedave
Rất tiếc, đó là chính xác – svens
Bạn cũng cần phải kiểm tra xem safe_mode đang hoạt động như exec là không có sẵn nếu safe_mode là trên
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;
}
Hàm ở phía dưới mạnh mẽ hơn. Nó đề cập đế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 bản vá suhosin, 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;
}
Để ghi lại, bản chỉnh sửa thêm kiểm tra danh sách đen suhosin là do tôi. Sau khi gửi nó, tôi nhận ra phiên xác thực của tôi bằng cách nào đó đã hết. –
Việc biên dịch một dòng chế độ an toàn, chức năng tồn tại và quản trị viên 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 SO khác nhau.
Điều này sẽ kiểm tra xem exec có sẵn và được kích hoạt TRƯỚC KHI cố gắng chạy nó. Nếu bạn chạy exec() và chức năng không tồn tại hoặc bị vô hiệu hóa một cảnh báo sẽ được tạo ra. Tùy thuộc vào cài đặt máy chủ có thể hiển thị cho trình duyệt và hầu như luôn ghi dòng vào tệp nhật ký = lần truy cập hiệu suất.
// 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'); }
- 1. Kiểm tra hộp kiểm bị vô hiệu hóa (Jquery)
- 2. Cách kiểm tra xem bộ nhớ cache của trình duyệt có bị vô hiệu hóa
- 3. Làm cách nào để kiểm tra xem menu thả xuống có bị vô hiệu hóa không?
- 4. Cách kiểm tra xem NSTimer đã bị vô hiệu hóa chưa
- 5. Vô hiệu hóa "Kiểm tra lỗi HTML cho tệp này bị vô hiệu hóa" gợi ý trong Netbeans
- 6. Vô hiệu hóa kiểm tra khóa ngoài trên dòng lệnh
- 7. jstree vô hiệu hóa hộp kiểm
- 8. Có thể xác định xem một số IE2umercó bị vô hiệu hóa không?
- 9. Cách phát hiện xem Safari có bị vô hiệu hóa trên iPhone
- 10. Kiểm tra xem javascript có được bật
- 11. Vô hiệu hóa hộp kiểm trong mvc3
- 12. Kiểm tra xem phím có bị Qt
- 13. Tìm xem hộp văn bản có bị vô hiệu hóa hay không sử dụng jquery
- 14. Làm cách nào để kiểm tra xem thông số loại chung có thể vô hiệu hóa không?
- 15. Tạo hiệu ứng mờ trên nút bị vô hiệu hóa
- 16. Cách tìm nút có bị vô hiệu hóa hay không trong Selenium IDE
- 17. chuyển đổi thuộc tính bị vô hiệu hóa trong jquery
- 18. Phương thức HTTP bị vô hiệu hóa trên Heroku
- 19. Xóa và thêm thuộc tính bị vô hiệu hóa với jQuery từ hộp kiểm html
- 20. Kiểm tra xem đây có phải là
- 21. Làm cách nào để kiểm tra, vô hiệu hóa điều kiện, ... với trình trợ giúp html?
- 22. Chọn lọc vô hiệu hóa các trình vòng lặp đã kiểm tra
- 23. Vô hiệu hóa UISearchBar
- 24. Mục bị vô hiệu hóa trong danh sách spinner
- 25. Phím shift trên bàn phím iPhone bị vô hiệu hóa
- 26. Xấu xí "bị vô hiệu hóa" của TMainMenu
- 27. công cụ kết hợp egit bị vô hiệu hóa
- 28. Tạo một loại giá trị không thể vô hiệu hóa có thể vô hiệu hóa
- 29. Sản phẩm Xcode -> Lưu trữ bị vô hiệu hóa
- 30. Thay đổi màu sắc của combobox bị vô hiệu hóa
tại sao không thử 'exec'? – Fosco
Tôi đang xây dựng một ứng dụng web và trên trang cài đặt, tôi muốn kiểm tra các yêu cầu. Tôi không thể tìm thấy bất cứ điều gì về những gì 'exec' ném ... vì vậy tôi muốn kiểm tra ở đây. : P – esqew
'echo (int) function_exists ('exec');' –