Zend Guard Loader 是運行 Zend 加密 PHP 文件的解碼器。配置過程中常遇到兩類錯誤:架構不匹配、PHP-FPM 進程池參數邏輯錯誤。本文提供針對性解決方案。
Failed loading /usr/local/php5/lib/php/ZendGuardLoader.so:
/usr/local/php5/lib/php/ZendGuardLoader.so: wrong ELF class: ELFCLASS32
64 位系統加載了 32 位的 .so 文件。PHP 是 64 位編譯,必須使用 64 位 Zend Guard Loader。
# 1. 確認 PHP 版本與位數
php -v
# PHP 5.3.28 (cli) (built: ...)
# Copyright (c) 1997-2013 The PHP Group
# Zend Engine v2.3.0 ... <-- 確認是 64 位構建
# 2. 下載 64 位 Loader (PHP 5.3 示例)
mkdir -p /usr/local/zend
cd /usr/local/zend
wget https://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
tar xzf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
# 3. 複製 .so 文件
cp ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/ZendGuardLoader.so /usr/local/zend/
# 4. 配置 php.ini
zend_extension=/usr/local/zend/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
| PHP 版本 | Zend Guard Loader 下載鏈接 (64位) |
|---|---|
| 5.3 | ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz |
| 5.4 | ZendGuardLoader-php-5.4-linux-glibc23-x86_64.tar.gz |
| 5.5 | ZendGuardLoader-php-5.5-linux-glibc23-x86_64.tar.gz |
| 5.6 | 不支持,請用 IonCube 或源碼加密替代 |
| 7.0+ | 不支持,Zend 官方已停止更新 |
ALERT: [pool www] pm.min_spare_servers(5) and pm.max_spare_servers(35)
cannot be greater than pm.max_children(5)
配置文件 php-fpm.conf 中 `pm.min_spare_servers`、`pm.max_spare_servers` 不能大於 `pm.max_children`。
pm.min_spare_servers ≤ pm.start_servers ≤ pm.max_spare_servers ≤ pm.max_children
; /usr/local/php/etc/php-fpm.conf
[www]
listen = /tmp/php-cgi.sock
user = www
group = www
pm = dynamic
pm.max_children = 50 ; 最大進程數 (根據內存: 總內存/單進程內存)
pm.start_servers = 5 ; 啟動時進程數
pm.min_spare_servers = 5 ; 最小空閒進程
pm.max_spare_servers = 35 ; 最大空閒進程
request_terminate_timeout = 30s
request_slowlog_timeout = 5s
slowlog = /usr/local/php/var/log/slow.log
# 1. 測試配置語法
/usr/local/php/sbin/php-fpm -t
# 2. 重啟
service php-fpm restart
# 3. 檢查進程
ps aux | grep php-fpm
# 應看到 1 master + N worker
# 4. 查看錯誤日誌
tail -f /usr/local/php/var/log/php-fpm.log
Zend Guard Loader 最後支持 PHP 5.5,官方已停止維護。現代項目建議:
php-obfuscator、PHPEncoder、Swoole Compiler。Zend Guard Loader 配置核心兩點:**下載匹配 PHP 版本和架構的 64 位 .so 文件**、**PHP-FPM 進程池參數遵循 min ≤ start ≤ max ≤ max_children 原則**。鑒於 Zend 產品線已停止更新,新項目請選擇 IonCube 或現代加密方案。