BizMaC bizmac.com

Vì sao hosting chặn một số hàm PHP

Hướng dẫn Web Hosting · cập nhật 26/07/2026

Máy chủ hosting chặn một số hàm PHP vì chúng cho phép chạy lệnh hệ điều hành, đọc ghi ngoài thư mục của website hoặc can thiệp vào tiến trình khác. Đọc bài này khoảng 7 phút là biết hàm nào bị chặn, vì sao, và làm gì khi mã nguồn của bạn cần tới chúng.

Bạn gặp chuyện này khi cài một plugin rồi nhận thông báo Call to undefined function, hoặc khi công cụ kiểm tra hệ thống của mã nguồn báo có hàm bị vô hiệu hoá. Danh sách hàm bị chặn nằm ở tham số disable_functions trong cấu hình PHP.

  1. Ba nhóm rủi ro khiến một hàm PHP bị đưa vào danh sách chặn.
  2. Bảng các hàm thường bị chặn và lý do từng hàm.
  3. Cách kiểm tra máy chủ đang chặn hàm nào.
  4. Làm gì khi mã nguồn cần một hàm đã bị chặn.
Danh sách chặn khác nhau giữa các nhà cung cấp và giữa các gói dịch vụ. Bài này liệt kê nhóm hàm bị chặn phổ biến trên hosting chia sẻ. Trên VPS và máy chủ riêng, bạn có quyền tự sửa danh sách này.

Ba nhóm rủi ro khiến một hàm PHP bị chặn

PHP có thư viện hàm rất rộng, trong đó một phần chạm thẳng vào hệ điều hành chứ không chỉ xử lý dữ liệu trong website. Trên hosting chia sẻ, nhiều website của nhiều khách chạy trên cùng một máy, nên một hàm chạm được ra ngoài phạm vi website là một đường cho mã độc lan sang tài khoản khác.

Nhóm rủi roHàm tiêu biểuKẻ tấn công làm được gì
Chạy lệnh hệ điều hànhsystem, exec, shell_exec, passthru, popenTải mã độc về máy chủ rồi chạy, mở cửa hậu
Can thiệp tiến trìnhproc_open, proc_close, proc_terminate, proc_niceNgắt tiến trình đang chạy, giành tài nguyên của máy
Đổi cấu hình lúc chạyini_alter, dl, virtualBật lại tính năng đã tắt, nạp phần mở rộng lạ

Một website bị chiếm quyền trên hosting chia sẻ mà chạy được lệnh hệ điều hành thì máy chủ coi như bị chiếm. Vì vậy nhóm hàm chạy lệnh gần như luôn nằm trong danh sách chặn ở mọi nhà cung cấp.

Bảng các hàm PHP thường bị chặn và lý do từng hàm

Bảng dưới đây liệt kê các hàm hay nằm trong disable_functions trên hosting chia sẻ, kèm việc hàm đó làm và lý do bị chặn. Đọc cột lý do là hiểu vì sao yêu cầu mở lại thường bị từ chối trên gói chia sẻ.

HàmChức năngVì sao bị chặn
systemChạy một chương trình bên ngoài và in kết quả raChạy được lệnh bất kỳ của hệ điều hành với quyền của tiến trình web
execChạy một chương trình bên ngoàiGiống system, dùng để tải và chạy chương trình độc hại
shell_execChạy lệnh qua shell, trả kết quả về dạng chuỗiCùng nhóm với exec, kết quả trả về dạng chuỗi tiện cho kẻ tấn công đọc
passthruChạy lệnh và truyền thẳng dữ liệu thô về trình duyệtDùng để lấy dữ liệu nhị phân từ lệnh hệ thống
popenMở con trỏ tệp tới một tiến trìnhCùng khả năng như proc_open, ít bị để ý hơn
proc_closeĐóng tiến trình mở bằng proc_open, trả mã thoátĐi kèm nhóm điều khiển tiến trình, mở một cái là mở cả nhóm
proc_get_statusLấy thông tin tiến trình mở bằng proc_openLộ thông tin về tiến trình đang chạy trên máy chủ
proc_terminateGửi tín hiệu kết thúc cho một tiến trìnhNgắt được tiến trình quan trọng đang chạy dở, gây mất dữ liệu
proc_niceĐổi mức ưu tiên của tiến trình hiện tạiNâng ưu tiên để chiếm CPU, làm chậm website của khách khác
escapeshellcmdThoát ký tự đặc biệt trong chuỗi lệnh shellChỉ có ý nghĩa khi đi cùng exec hay system, chặn cả cụm cho gọn
escapeshellargThêm dấu nháy quanh một đối số shellCùng lý do với escapeshellcmd
dlNạp một phần mở rộng PHP lúc đang chạyNạp được thư viện lạ vào tiến trình PHP, vượt qua cấu hình đã chốt
show_sourceIn mã nguồn một file PHP có tô màu cú phápLộ mã nguồn kèm thông tin kết nối cơ sở dữ liệu trong file cấu hình
ini_alterBí danh của ini_set, đổi giá trị cấu hình lúc chạyBật lại các tính năng quản trị viên đã tắt
virtualGọi một yêu cầu phụ của ApacheTruy cập được tài nguyên nằm ngoài phạm vi mã nguồn đang chạy
openlogMở kết nối tới bộ ghi nhật ký hệ thốngGhi rác vào nhật ký hệ thống, che dấu vết tấn công
mailGửi thư trực tiếp qua chương trình mail của máy chủGửi thư rác không qua xác thực, làm IP máy chủ bị đưa vào danh sách chặn
symlinkTạo liên kết tượng trưng tới file khácTrỏ ra ngoài thư mục website để đọc file của tài khoản khác trên cùng máy

Cách kiểm tra máy chủ đang chặn hàm PHP nào

Đừng đoán theo danh sách chung, mỗi máy chủ khai một danh sách riêng. Cách nhanh nhất là tạo một file PHP trong thư mục website, gọi phpinfo() rồi tìm dòng disable_functions. Xoá file đó ngay sau khi xem xong vì nó phơi bày cấu hình máy chủ cho bất kỳ ai truy cập.

<?php phpinfo();

Cách thứ hai không cần tạo file lộ thông tin, chỉ hỏi đúng một hàm bạn quan tâm:

<?php
var_dump(function_exists('exec'));
var_dump(ini_get('disable_functions'));

Trên bảng điều khiển, đường đi có sẵn: DirectAdmin có mục xem cấu hình PHP theo từng tài khoản, còn Plesk hiện danh sách trong Websites & Domains ở phần PHP Settings.

Làm gì khi mã nguồn cần một hàm PHP đã bị chặn

Trước khi xin mở, hãy xem có cách khác không. Phần lớn trường hợp mã nguồn gọi hàm chạy lệnh là để làm những việc PHP đã có hàm sẵn an toàn hơn, chỉ là người viết chọn đường tắt.

  1. Tìm hàm thay thế trong PHP. Nén file dùng lớp ZipArchive thay vì gọi lệnh zip. Xử lý ảnh dùng phần mở rộng GD hoặc Imagick thay vì gọi ImageMagick qua dòng lệnh.
  2. Bỏ tính năng không cần. Nhiều plugin gọi hàm chạy lệnh chỉ để hiện thông tin hệ thống trong trang quản trị, tắt phần đó là hết lỗi.
  3. Đổi cách chạy tác vụ nền. Mã nguồn gọi lệnh để chạy tác vụ định kỳ thì chuyển sang cron job của bảng điều khiển. Xem hướng dẫn sử dụng Cron Jobs trên DirectAdmin.
  4. Chuyển sang VPS. Mã nguồn buộc phải chạy lệnh hệ điều hành thì hosting chia sẻ không phải chỗ chạy nó. Trên VPS bạn tự quyết danh sách chặn.
Không có hàm nào tên exec_safe hay system_safe trong PHP. Nếu tài liệu nào đó khuyên bạn thay exec bằng những tên này thì tài liệu đó sai. Cách thay thế đúng là dùng lớp và phần mở rộng có sẵn của PHP cho từng việc cụ thể.

Chặn hàm PHP chỉ là một lớp bảo mật

Danh sách chặn ngăn kẻ tấn công leo thang sau khi đã vào được, nhưng không ngăn họ vào. Website vẫn bị chiếm qua plugin lỗi thời, qua mật khẩu yếu hoặc qua lỗ hổng tải file lên. Chặn hàm chỉ giới hạn thiệt hại khi chuyện đó xảy ra.

Ba việc cần làm song song: cập nhật mã nguồn và plugin đúng hạn, xác thực dữ liệu người dùng nhập vào trước khi xử lý, và không để file cấu hình chứa mật khẩu nằm trong thư mục truy cập được từ trình duyệt.

Việc nên kiểm tra trên hosting của bạn

Chạy thử đoạn function_exists ở trên cho đúng những hàm mã nguồn của bạn cần, rồi đối chiếu với bảng hàm PHP phía trên để biết hàm nào có khả năng được mở và hàm nào chắc chắn không.

Nếu website đang lỗi vì một phần mở rộng chưa bật chứ không phải vì hàm bị chặn, đó là chuyện khác và xử lý theo hướng dẫn bật tắt extension PHP trên DirectAdmin. Hai lỗi này hay bị nhầm vì cùng cho thông báo Call to undefined function.

Hướng dẫn này có giúp được Anh/Chị không?

Bài khác trong Web Hosting

Xem cả 14 bài
Kích hoạt LiteSpeed Cache tăng tốc website Cách bật LiteSpeed Cache cho WordPress, Joomla, PrestaShop và mã nguồn PHP tự viết, kèm cách đọc HTTP header để xác nhận cache đã chạy đúng. 9 phút đọc 145 lượt xem Cập nhật 24/08/2026 Fix lỗi Function ereg is deprecated cho PHP 5.3 PHP 5.3 báo Function ereg is deprecated vì họ hàm ereg đã lỗi thời. Cách thay bằng preg_match, preg_replace và bọc mẫu trong dấu phân cách. 7 phút đọc 141 lượt xem Cập nhật 16/08/2026 Managed vs unmanaged hosting: chọn loại nào Managed hosting và unmanaged hosting khác nhau ở chỗ ai vận hành máy chủ. Bài này so từng đầu việc, chi phí thật và cách chọn theo tình huống của bạn. 9 phút đọc 140 lượt xem Cập nhật 09/08/2026 Vì sao website báo lỗi 403, 404, 500 và cách xử Lỗi 403 là bị chặn quyền, 404 là không tìm thấy trang, 500 là lỗi máy chủ. Bài này giải thích mỗi mã lỗi website nghĩa là gì và thử cách xử nào trước. 7 phút đọc 34 lượt xem Cập nhật 29/07/2026 Băng thông và dung lượng hosting là gì Băng thông là lượng dữ liệu truyền ra mỗi tháng, dung lượng là chỗ chứa file. Bài này phân biệt hai thứ hay bị nhầm và cách ước lượng mình cần bao nhiêu. 6 phút đọc 42 lượt xem Cập nhật 29/07/2026 Chuyển website sang hosting BizMaC cần làm gì Chuyển website sang hosting BizMaC theo ba bước: sao lưu ở nơi cũ, đưa dữ liệu lên hosting mới rồi trỏ tên miền sau cùng. Bài này là bản đồ tổng quát cả quy trình. 6 phút đọc 39 lượt xem Cập nhật 28/07/2026