Đánh giá Hosting

Menu
  • Home
  • Tin tức
  • Đánh giá
    • Dịch vụ hosting chia sẻ
    • Dịch vụ máy chủ ảo
    • Dịch vụ máy chủ riêng
  • Quản trị
  • Khuyến mãi
  • Làm Web
  • Thủ thuật
  • MMO
Home
Quản trị
Script Tự Động Cài Đặt IonCube Loader cho Webinoly
Quản trị

Script Tự Động Cài Đặt IonCube Loader cho Webinoly

Hoàng Trung October 7, 2025

Bạn đang sử dụng Webinoly để quản lý server LEMP (Linux, Nginx, MySQL/MariaDB, PHP) trên Ubuntu và cần triển khai IonCube Loader để chạy các ứng dụng PHP mã hóa? Script tự động cài đặt IonCube Loader phiên bản 1.0 là giải pháp hoàn hảo, giúp bạn cài đặt IonCube một cách nhanh chóng, an toàn và hiệu quả.

Ioncube loader

IonCube Loader là một extension PHP cần thiết để chạy các file PHP được mã hóa, thường được yêu cầu bởi các ứng dụng thương mại như WHMCS, phần mềm quản lý hosting, hoặc các plugin/theme WordPress cao cấp. Mặc dù Webinoly cung cấp một stack LEMP mạnh mẽ với các lệnh đơn giản để quản lý Nginx, PHP, và MariaDB, nó không tích hợp sẵn IonCube Loader. Việc cài đặt IonCube Loader không quá phức tạp, tuy nhiên nếu cài đặt thủ công có thể tốn thời gian, dễ xảy ra lỗi, và đòi hỏi kiến thức về cấu hình PHP. Script install_ioncube_webinoly_v1.0.sh ra đời để tự động hóa toàn bộ quy trình, từ phát hiện phiên bản PHP, tải file, cấu hình, đến xác nhận hoạt động. Với script này, bạn có thể cài đặt IonCube Loader chỉ trong vài phút, ngay cả khi mới làm quen với quản trị server, mang lại sự tiện lợi vượt trội cho các ứng dụng yêu cầu IonCube như WHMCS hay plugin WordPress mã hóa.

Tính năng nổi bật của Script v1.0

  • Tự động phát hiện và cài đặt: Tự động nhận diện phiên bản PHP (7.4–8.3) và chọn file IonCube Loader phù hợp. Nếu không tìm thấy loader chính xác, script sẽ fallback sang phiên bản gần nhất hoặc mới nhất, đảm bảo tương thích tối đa.
  • Cấu hình chuẩn hóa: Tạo file cấu hình 20-ioncube.ini trong thư mục mods-available và sử dụng symlink cho cả PHP-FPM và CLI, tuân theo chuẩn cấu hình PHP trên Ubuntu, dễ dàng bảo trì và gỡ bỏ.
  • Kiểm tra toàn diện: Kiểm tra quyền root, kết nối mạng, trạng thái PHP-FPM, cấu hình Nginx, và quyền ghi thư mục extension, đảm bảo quá trình cài đặt diễn ra suôn sẻ.
  • Ghi log chi tiết: Lưu toàn bộ quá trình vào /var/log/ioncube_install.log với dấu thời gian, giúp dễ dàng theo dõi và xử lý sự cố.
  • Dọn dẹp an toàn: Tự động xóa file tạm sau khi hoàn tất hoặc khi gặp lỗi, giữ server sạch sẽ.
  • Hỗ trợ tùy chỉnh: Cho phép chỉ định phiên bản PHP qua tham số (ví dụ: ./script.sh 8.1), phù hợp với server chạy nhiều phiên bản PHP.

Hướng dẫn sử dụng

Cài đặt IonCube Loader với script v1.0 rất đơn giản. Dưới đây là các bước chi tiết, với mã nguồn được định dạng để hiển thị đẹp mắt bằng plugin Enlighter:

1. Tạo script:

Lưu script vào file install_ioncube_webinoly_v1.0.sh:

sudo nano install_ioncube_webinoly_v1.0.sh

Dán nội dung script dưới đây, lưu và thoát.

#!/bin/bash
# ==========================================================
# Script: Cài đặt IonCube Loader cho Webinoly (v1.0)
# Mục đích: Hỗ trợ PHP 7.4–8.3, dò loader mới nhất, fallback, log chi tiết
# Phiên bản: v1.0 (07/10/2025)
# Log: /var/log/ioncube_install.log
# ==========================================================

set -euo pipefail
trap 'rm -rf "/tmp/ioncube" "ioncube_loaders.tar.gz" 2>/dev/null' EXIT

LOG_FILE="/var/log/ioncube_install.log"
mkdir -p "$(dirname "$LOG_FILE")"
chmod 644 "$LOG_FILE" 2>/dev/null || true
exec > >(tee -a "$LOG_FILE") 2>&1
echo "=== IONCUBE INSTALL START: $(date '+%Y-%m-%d %H:%M:%S') ==="

# --- Root check ---
if [[ $EUID -ne 0 ]]; then
    echo "❌ Lỗi: script phải chạy với quyền root."
    exit 1
fi

# --- PHP version param or autodetect ---
if [[ ${1-} ]]; then
    PHP_VERSION="$1"
    if [[ ! -d "/etc/php/$PHP_VERSION" ]]; then
        echo "❌ Lỗi: PHP $PHP_VERSION không tồn tại tại /etc/php/$PHP_VERSION"
        exit 1
    fi
else
    PHP_VERSION=$(ls /etc/php | grep -E '^[0-9]+\.[0-9]+$' | sort -V | tail -n1 || true)
fi

if [[ -z "${PHP_VERSION:-}" ]]; then
    echo "❌ Lỗi: Không tìm thấy PHP trên hệ thống. Cài đặt PHP trước (VD: sudo webinoly -stack)."
    exit 1
fi

echo "🔹 Target PHP version: $PHP_VERSION"
echo "🔹 PHP CLI: $(php -v | head -n1 || true)"

# --- Kiểm tra binary PHP-FPM (gợi ý 3) ---
FPM_BIN=$(command -v "php-fpm${PHP_VERSION//./}" || command -v php-fpm || true)
if [[ -x "$FPM_BIN" ]]; then
    echo "🔹 PHP-FPM binary: $FPM_BIN"
    echo "🔹 PHP-FPM version: $($FPM_BIN -v | head -n1 || true)"
else
    echo "⚠️ Không tìm thấy php-fpm binary, bỏ qua kiểm tra."
fi

# --- Ensure php-fpm service exists / start if necessary ---
if systemctl list-units --full -all | grep -q "php${PHP_VERSION}-fpm.service"; then
    if ! systemctl is-active --quiet "php${PHP_VERSION}-fpm"; then
        echo "⚠️ php${PHP_VERSION}-fpm không active, thử khởi động..."
        systemctl start "php${PHP_VERSION}-fpm" || {
            echo "❌ Không thể khởi động php${PHP_VERSION}-fpm; kiểm tra bằng: systemctl status php${PHP_VERSION}-fpm"
            exit 1
        }
    fi
else
    echo "⚠️ Không tìm thấy php${PHP_VERSION}-fpm.service — tiếp tục nhưng có thể cần cấu hình thủ công."
fi

# --- Version numeric compare (warn for >8.1) ---
PHP_MAJOR=$(echo "$PHP_VERSION" | cut -d. -f1)
PHP_MINOR=$(echo "$PHP_VERSION" | cut -d. -f2)
if (( PHP_MAJOR > 8 || (PHP_MAJOR == 8 && PHP_MINOR > 1) )); then
    echo "⚠️ Cảnh báo: IonCube có thể chưa hỗ trợ đầy đủ PHP $PHP_VERSION. Kiểm tra https://www.ioncube.com/loaders.php"
    read -p "→ Có tiếp tục? (y/N): " CONF
    [[ "$CONF" != "y" && "$CONF" != "Y" ]] && { echo "Huỷ bỏ."; exit 1; }
fi

# --- Network check (gợi ý 1: thay ping bằng curl) ---
echo "🔹 Kiểm tra kết nối tới downloads.ioncube.com..."
if ! curl -Is https://downloads.ioncube.com | head -n1 | grep -q "200"; then
    echo "❌ Không thể kết nối tới downloads.ioncube.com (HTTP không trả về 200 OK) — kiểm tra DNS/kết nối/firewall."
    exit 1
fi

# --- Determine extension_dir using php-config for target PHP if available ---
PHP_CONFIG_BIN="/usr/bin/php-config${PHP_VERSION//./}"
if [[ -x "$PHP_CONFIG_BIN" ]]; then
    EXT_DIR=$("$PHP_CONFIG_BIN" --extension-dir 2>/dev/null || true)
fi
if [[ -z "$EXT_DIR" ]]; then
    EXT_DIR=$(php -i 2>/dev/null | awk -F ' => ' '/^extension_dir/ {print $2; exit}' || true)
fi
if [[ -z "$EXT_DIR" ]]; then
    echo "❌ Không xác định được extension_dir từ php-config hoặc php -i"
    exit 1
fi
echo "🔹 extension_dir: $EXT_DIR"

if [[ ! -w "$EXT_DIR" ]]; then
    echo "❌ Không có quyền ghi vào $EXT_DIR. Kiểm tra quyền hoặc chạy script với sudo/root."
    exit 1
fi

# --- Prepare temp dir and download ---
TEMP_DIR="/tmp/ioncube"
mkdir -p "$TEMP_DIR"
cd "$TEMP_DIR" || exit 1

IONCUBE_URL="https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz"
echo "🔸 Downloading ioncube loaders..."
if ! wget --no-cache -q "$IONCUBE_URL" -O ioncube_loaders.tar.gz; then
    echo "❌ Lỗi: không tải được gói từ $IONCUBE_URL. Kiểm tra https://www.ioncube.com/loaders.php"
    exit 1
fi

if [[ ! -s ioncube_loaders.tar.gz ]]; then
    echo "❌ File tải về rỗng/hỏng."
    exit 1
fi

# --- Extract ---
tar xzf ioncube_loaders.tar.gz

# --- Find best loader file ---
TARGET_SO="ioncube/ioncube_loader_lin_${PHP_VERSION}.so"
if [[ -f "$TARGET_SO" ]]; then
    SELECTED="$TARGET_SO"
else
    echo "⚠️ Không tìm thấy loader chính xác cho PHP $PHP_VERSION — tìm bản fallback..."
    MAJ="${PHP_MAJOR}."
    mapfile -t candidates < <(ls ioncube/ioncube_loader_lin_${MAJ}*.so 2>/dev/null | sort -V || true)
    if [[ ${#candidates[@]} -gt 0 ]]; then
        SELECTED=$(printf "%s\n" "${candidates[@]}" | sort -V | tail -n1)
    else
        SELECTED=$(ls ioncube/ioncube_loader_lin_*.so 2>/dev/null | sort -V | tail -n1 || true)
    fi
fi

if [[ -z "${SELECTED:-}" || ! -f "$SELECTED" ]]; then
    echo "❌ Không tìm thấy bất kỳ loader phù hợp nào trong gói đã tải."
    exit 1
fi

SELECTED_VERSION=$(basename "$SELECTED" | grep -oE '[0-9]+\.[0-9]+')
echo "🔹 Đã chọn loader: ioncube_loader_lin_${SELECTED_VERSION}.so (cho PHP $PHP_VERSION)"

# --- Cảnh báo fallback (gợi ý 2) ---
if [[ "$SELECTED_VERSION" != "$PHP_VERSION" ]]; then
    echo "⚠️ Loader không trùng khớp hoàn toàn: dùng bản $SELECTED_VERSION cho PHP $PHP_VERSION. Có thể gặp vấn đề tương thích, kiểm tra https://www.ioncube.com/loaders.php"
fi

# --- Copy into extension dir ---
DEST_SO="$EXT_DIR/ioncube_loader_lin_${PHP_VERSION}.so"
cp "$SELECTED" "$DEST_SO"
chmod 644 "$DEST_SO"
echo "🔸 Copy tới $DEST_SO"

# --- Create mods-available conf and enable for fpm/cli (gợi ý 4: kiểm tra và thông báo nếu tạo mới) ---
MODS_DIR="/etc/php/${PHP_VERSION}/mods-available"
if [[ ! -d "$MODS_DIR" ]]; then
    echo "⚠️ Không tìm thấy $MODS_DIR, tạo mới..."
    mkdir -p "$MODS_DIR"
fi
IONCUBE_INI="${MODS_DIR}/20-ioncube.ini"
echo "zend_extension=${DEST_SO}" > "$IONCUBE_INI"
echo "🔸 Tạo $IONCUBE_INI"

for TYPE in fpm cli; do
    CONF_D="/etc/php/${PHP_VERSION}/${TYPE}/conf.d"
    if [[ -d "$CONF_D" ]]; then
        ln -sf "$IONCUBE_INI" "${CONF_D}/20-ioncube.ini"
        echo "🔸 Enabled ioncube for $TYPE (symlink -> ${CONF_D}/20-ioncube.ini)"
    else
        echo "⚠️ Thư mục conf.d không tồn tại: $CONF_D — bỏ qua."
    fi
done

# --- Test nginx config before restart ---
echo "🔹 Kiểm tra cấu hình Nginx..."
if ! nginx -t &>/dev/null; then
    echo "❌ Cấu hình Nginx không hợp lệ. Kiểm tra /var/log/nginx/error.log"
    exit 1
fi

# --- Restart services ---
echo "🔄 Restarting php-fpm (if exists) and nginx..."
if systemctl list-units --full -all | grep -q "php${PHP_VERSION}-fpm.service"; then
    systemctl restart "php${PHP_VERSION}-fpm" || {
        echo "❌ Không thể restart php${PHP_VERSION}-fpm. Xem /var/log/php${PHP_VERSION}-fpm.log"
        exit 1
    }
fi
systemctl restart nginx || {
    echo "❌ Không thể restart nginx. Xem /var/log/nginx/error.log"
    exit 1
}

# --- Verify loader loaded in CLI ---
echo "🔹 Kiểm tra ioncube trong PHP CLI modules..."
if php -m 2>/dev/null | grep -qi ioncube; then
    echo "✅ IonCube đã nạp trong CLI."
else
    echo "⚠️ IonCube chưa xuất hiện trong CLI. Kiểm tra php -i | grep ioncube, hoặc xem /var/log/php${PHP_VERSION}-fpm.log"
fi

# --- Final check and instructions ---
echo "🎉 Hoàn tất: IonCube Loader đã được cài đặt cho PHP $PHP_VERSION."
echo "🔎 Kiểm tra PHP-FPM bằng cách tạo file /var/www/html/phpinfo.php với nội dung '<?php phpinfo(); ?>'"
echo "Log chi tiết: $LOG_FILE"
echo "=== IONCUBE INSTALL END: $(date '+%Y-%m-%d %H:%M:%S') ==="

2. Cấp quyền thực thi:

sudo chmod +x install_ioncube_webinoly_v1.0.sh

3. Chạy script:

Tự động chọn PHP mới nhất:

sudo ./install_ioncube_webinoly_v1.0.sh

Chỉ định phiên bản PHP (ví dụ: PHP 8.1):

sudo ./install_ioncube_webinoly_v1.0.sh 8.1

4. Kiểm tra kết quả:

Script hiển thị trạng thái cài đặt và ghi log vào /var/log/ioncube_install.log.

Tạo file phpinfo.php để kiểm tra qua trình duyệt:

<?php phpinfo(); ?>

Lưu file vào /var/www/html/phpinfo.php, truy cập qua trình duyệt (ví dụ: http://your-domain/phpinfo.php), và xóa file sau khi kiểm tra để đảm bảo an toàn:

sudo rm /var/www/html/phpinfo.php

5. Khắc phục sự cố

Lỗi tải file: Nếu không tải được IonCube Loader, kiểm tra URL mới nhất tại https://www.ioncube.com/loaders.php và cập nhật biến IONCUBE_URL trong script:

IONCUBE_URL="https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz"

PHP không hỗ trợ: Script cảnh báo nếu dùng PHP 8.2+, cho phép chọn tiếp tục hoặc downgrade phiên bản PHP:

sudo webinoly -php-ver=8.1

Lỗi dịch vụ: Kiểm tra log được script ghi tại:

cat /var/log/php${PHP_VERSION}-fpm.log
cat /var/log/nginx/error.log

Khôi phục cấu hình: Script tự động backup cấu hình và sử dụng file 20-ioncube.ini riêng. Để gỡ cài đặt, xóa file:

sudo rm /etc/php/${PHP_VERSION}/mods-available/20-ioncube.ini
sudo rm /etc/php/${PHP_VERSION}/fpm/conf.d/20-ioncube.ini
sudo rm /etc/php/${PHP_VERSION}/cli/conf.d/20-ioncube.ini

Script install_ioncube_webinoly_v1.0.sh là công cụ tốt để tích hợp IonCube Loader vào server Webinoly, giúp bạn triển khai các ứng dụng PHP mã hóa như WHMCS hay plugin WordPress một cách dễ dàng và hiệu quả. Với khả năng tự động hóa, kiểm tra thông minh, và cấu hình chuẩn hóa, script này không chỉ tiết kiệm thời gian mà còn đảm bảo độ tin cậy cho các dự án hosting hoặc phát triển web. Nếu bạn cần sử dụng IonCube Loader trên Webinoly, đây là giải pháp không thể bỏ qua!

Share
Tweet
Email
Prev Article

Related Articles

Hướng dẫn tạo VPN với VPS của Vultr để nâng tốc độ truy cập internet thời điểm đứt cáp quang biển
Những ngày qua, 2 tuyến cáp AAG và AAE-1 cùng …

Hướng dẫn tạo VPN với VPS của Vultr để nâng tốc độ truy cập internet thời điểm đứt cáp quang biển

Servertut Script bài 2: Giới thiệu các công cụ mà Servertut Script cung cấp để quản lý VPS/Server
Sau khi cài đặt hoàn tất Servertut Script lên VPS/Server, …

Servertut Script bài 2: Giới thiệu các công cụ mà Servertut Script cung cấp để quản lý VPS/Server

About The Author

Hoàng Trung

Leave a Reply Cancel Reply

InterServer Web Hosting and VPS
crazy time game

CHUYÊN MỤC

  • Thông tin – Kiến thức
    • Kiến thức
    • Thông tin nhà cung cấp
  • Đánh giá
    • Dịch vụ máy chủ riêng
    • Dịch vụ máy chủ ảo
    • Dịch vụ hosting chia sẻ
    • Các dịch vụ khác
  • Khuyến mãi
  • Quản trị
  • Thủ thuật – Tiện ích
    • Làm Web
  • MMO
  • Video

ĐƯỢC QUAN TÂM

  • DEAL BLACK FRIDAY KHỦNG: DreamHost Giảm 76% HOSTING TỐI ƯU WORDPRESS, Tặng MIỄN PHÍ Xây Dựng Website & Tên Miền
    DEAL BLACK FRIDAY KHỦNG: DreamHost Giảm 76% HOSTING TỐI ƯU WORDPRESS, Tặng MIỄN PHÍ Xây Dựng Website & Tên Miền
  • RackNerd tung khuyến mãi 11.11: VPS KVM chỉ từ $10.76/năm – “Rẻ Vô Địch” hay “Tiền Nào Của Nấy”?
    RackNerd tung khuyến mãi 11.11: VPS KVM chỉ từ $10.76/năm – “Rẻ Vô Địch” hay “Tiền Nào Của Nấy”?
  • [BLACK FRIDAY 2025] Bùng nổ ưu đãi tại NameCheap: Tên miền chỉ từ $0.48, Hosting giảm đến 80%!
    [BLACK FRIDAY 2025] Bùng nổ ưu đãi tại NameCheap: Tên miền chỉ từ $0.48, Hosting giảm đến 80%!
  • [BLACK FRIDAY 2025] RackNerd ra mắt Siêu Khuyến Mãi VPS KVM chỉ từ $10.60/Năm!
    [BLACK FRIDAY 2025] RackNerd ra mắt Siêu Khuyến Mãi VPS KVM chỉ từ $10.60/Năm!
  • [Early BLACK FRIDAY 2025] HawkHost tung ưu đãi 70% (Lần thanh toán đầu) cho Hosting NVMe!
    [Early BLACK FRIDAY 2025] HawkHost tung ưu đãi 70% (Lần thanh toán đầu) cho Hosting NVMe!

KHUYẾN MÃI

  • DEAL BLACK FRIDAY KHỦNG: DreamHost Giảm 76% HOSTING TỐI ƯU WORDPRESS, Tặng MIỄN PHÍ Xây Dựng Website & Tên Miền
    DEAL BLACK FRIDAY KHỦNG: DreamHost Giảm 76% HOSTING TỐI ƯU WORDPRESS, Tặng MIỄN PHÍ Xây Dựng Website & Tên Miền
  • [Early BLACK FRIDAY 2025] HawkHost tung ưu đãi 70% (Lần thanh toán đầu) cho Hosting NVMe!
    [Early BLACK FRIDAY 2025] HawkHost tung ưu đãi 70% (Lần thanh toán đầu) cho Hosting NVMe!
  • [BLACK FRIDAY 2025] RackNerd ra mắt Siêu Khuyến Mãi VPS KVM chỉ từ $10.60/Năm!
    [BLACK FRIDAY 2025] RackNerd ra mắt Siêu Khuyến Mãi VPS KVM chỉ từ $10.60/Năm!
  • [BLACK FRIDAY 2025] Bùng nổ ưu đãi tại NameCheap: Tên miền chỉ từ $0.48, Hosting giảm đến 80%!
    [BLACK FRIDAY 2025] Bùng nổ ưu đãi tại NameCheap: Tên miền chỉ từ $0.48, Hosting giảm đến 80%!
  • RackNerd tung khuyến mãi 11.11: VPS KVM chỉ từ $10.76/năm – “Rẻ Vô Địch” hay “Tiền Nào Của Nấy”?
    RackNerd tung khuyến mãi 11.11: VPS KVM chỉ từ $10.76/năm – “Rẻ Vô Địch” hay “Tiền Nào Của Nấy”?

ĐÁNH GIÁ

  • Hawk Host Chính Thức Hỗ Trợ OpenLiteSpeed Trên Cloud Compute
    Hawk Host Chính Thức Hỗ Trợ OpenLiteSpeed Trên Cloud Compute
  • So sánh OVH VPS và Hetzner Cloud VPS: Ai “đáng tiền” hơn năm 2025?
    So sánh OVH VPS và Hetzner Cloud VPS: Ai “đáng tiền” hơn năm 2025?
  • Đánh Giá VPSDime: Nhà Cung Cấp VPS Giá Rẻ Với Hiệu Suất Cao
    Đánh Giá VPSDime: Nhà Cung Cấp VPS Giá Rẻ Với Hiệu Suất Cao
  • Đánh giá, so sánh hiệu suất Disk và CPU của Linode, DigitalOcean, UpCloud, Hetzner, Terrahost và Scaleway
    Đánh giá, so sánh hiệu suất Disk và CPU của Linode, DigitalOcean, UpCloud, Hetzner, Terrahost và Scaleway
  • 10 nhà cung cấp dich vụ CDN tốt nhất thế giới
    10 nhà cung cấp dich vụ CDN tốt nhất thế giới

LIÊN QUAN

  • Hướng dẫn đăng ký DigitalOcean để nhận được 100 USD khuyến mãi
    Hướng dẫn đăng ký DigitalOcean để nhận được 100 USD khuyến mãi
  • Hướng dẫn tạo VPN với VPS của Vultr để nâng tốc độ truy cập internet thời điểm đứt cáp quang biển
    Hướng dẫn tạo VPN với VPS của Vultr để nâng tốc độ truy cập internet thời điểm đứt cáp quang biển
  • Hướng dẫn cài đặt site WordPress trên server cài Centmin Mod
    Hướng dẫn cài đặt site WordPress trên server cài Centmin Mod
  • Hướng dẫn tạo, cấu hình swap để tăng sự ổn định cho VPS
    Hướng dẫn tạo, cấu hình swap để tăng sự ổn định cho VPS
  • Servertut Script bài 2: Giới thiệu các công cụ mà Servertut Script cung cấp để quản lý VPS/Server
    Servertut Script bài 2: Giới thiệu các công cụ mà Servertut Script cung cấp để quản lý VPS/Server

Đánh giá Hosting

Copyright © 2025 Đánh giá Hosting

Ad Blocker Detected

Our website is made possible by displaying online advertisements to our visitors. Please consider supporting us by disabling your ad blocker.

Refresh