Zend Optimizer / Zend Guard Loader
Общее описание
Zend Optimizer был популярным компонентом в ранних версиях PHP (до 5.5), который позволял запускать предварительно скомпилированные и защищённые PHP-файлы, созданные с помощью Zend Guard. Он обеспечивал оптимизацию производительности и защиту исходного кода от несанкционированного доступа.
Основные функции:
- Запуск зашифрованных PHP-файлов
- Кэширование и оптимизация байт-кода
- Ускорение работы приложений
- Поддержка старых версий PHP (4 и 5.x)
Примечание: Zend Optimizer устарел и больше не поддерживается. Его заменой стал Zend Guard Loader, который совместим с более новыми версиями PHP, и OPcache, входящий в стандартную поставку PHP с версии 5.5+.
Версии Zend Optimizer и Zend Guard Loader
Название | Версии PHP | Особенности |
---|---|---|
Zend Optimizer 3.x | PHP 4.3–5.4 | Поддерживает защищённый код Zend Encoder/Guard |
Zend Guard Loader 6.x/7.x | PHP 5.3–5.6 | Современная замена Zend Optimizer |
Zend Guard Loader 8.x+ | PHP 7.0–7.4 | Совместимость с более новыми версиями PHP |
OPcache | PHP 5.5+ | Встроенный кэшировщик байт-кода |
Zend Guard Loader продолжает быть актуальным для запуска защищённых PHP-приложений, особенно на серверах, где требуется запуск кода, защищённого с помощью Zend Guard.
Установка Zend Guard Loader
На Ubuntu/Debian:
- Скачайте Zend Guard Loader с официального сайта
- Распакуйте архив:
tar -xzf zend-loader-php5.6-linux-x86_64.tar.gz
- Скопируйте
.so
файл в директорию модулей PHP:
sudo cp zend-loader-php5.6-linux-x86_64/ZendGuardLoader.so /usr/lib/php/20131226/
- Создайте конфигурационный файл:
sudo nano /etc/php/7.4/mods-available/zend-loader.ini
Добавьте:
zend_extension=/usr/lib/php/20131226/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.obfuscation_level_support=3
- Активируйте модуль:
sudo phpenmod zend-loader
sudo systemctl restart apache2
На CentOS/RHEL:
- Скачайте Zend Guard Loader.
- Распакуйте и скопируйте
ZendGuardLoader.so
в/usr/lib64/php/modules/
- Создайте файл
/etc/php.d/zend-loader.ini
со следующим содержанием:
zend_extension=/usr/lib64/php/modules/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.obfuscation_level_support=3
- Перезапустите Apache или PHP-FPM:
systemctl restart httpd
Конфигурационные параметры
Параметр | Описание |
---|---|
zend_loader.enable |
Включить (1) или выключить (0) загрузчик |
zend_loader.disable_licensing |
Отключение проверки лицензии (для тестирования) |
zend_loader.obfuscation_level_support |
Уровень поддержки обфусцированного кода |
zend_loader.license_path |
Путь к лицензионному файлу (если используется) |
Поддержка версий PHP
Zend Guard Loader | Версии PHP |
---|---|
5.x | PHP 5.3, 5.4 |
6.x | PHP 5.5, 5.6 |
7.x | PHP 7.0, 7.1, 7.2 |
8.x | PHP 7.3, 7.4 (частичная поддержка) |
Для PHP 8.0 и выше рекомендуется использовать альтернативы, так как официальная поддержка Zend Guard Loader прекращена.
Интеграция с панелями управления
Zend Guard Loader можно установить на серверах, использующих популярные хостинговые панели:
cPanel:
- Используйте WHM → EasyApache 4 → Добавьте Zend Optimizer через PHP Extensions
Plesk:
- Перейдите в "Tools & Settings" → PHP Settings → Добавьте расширение ZendGuardLoader
DirectAdmin:
- Установите вручную через CustomBuild:
cd /usr/local/directadmin/custombuild
./build set zend_loader yes
./build zend_loader
Как работает Zend Guard Loader?
Zend Guard Loader — это модуль, загружаемый в PHP, который: 1. Проверяет, является ли файл защищённым (скомпилированным Zend Guard'ом) 2. Дешифрует файл, если есть лицензия 3. Передаёт дешифрованный код в PHP-парсер
Файлы, защищённые Zend Guard’ом, имеют специальную сигнатуру в начале файла:
<?php
// Encoded by Zend Guard
Работа с Zend Guard
Zend Guard — это инструмент для защиты и распространения PHP-приложений. Он позволяет:
- Обфусцировать исходный код
- Защитить от декомпиляции
- Добавить ограничения по времени или домену
- Генерировать защищённые .php
файлы
После шифрования файлов их можно запускать только на серверах с установленным Zend Guard Loader.
Совместимость с OPcache
Zend Guard Loader несовместим с OPcache в некоторых версиях. Если вы используете Zend Guard Loader, рекомендуется отключить OPcache в php.ini
:
;opcache.enable=0
Или оставьте OPcache, но отключите его для защищённых файлов:
opcache.blacklist_filename=/path/to/blacklist.txt
В файл blacklist.txt
добавьте пути к защищённым файлам.
Диагностика и проверка установки
Создайте файл info.php
с содержанием:
<?php phpinfo(); ?>
Откройте его в браузере (http://ваш_домен/info.php
) и убедитесь, что в выводе присутствует секция:
Zend Guard Loader
Zend Optimizer
Если такой секции нет, значит, модуль не загружен корректно.
Проблемы и решения
Ошибка: Cannot load Zend Extension
- Убедитесь, что путь к
ZendGuardLoader.so
указан правильно - Убедитесь, что версия Zend Guard Loader совместима с вашей версией PHP и архитектурой системы
Ошибка: Zend Optimizer not installed
- Это может означать, что:
- Файл
ZendOptimizer.so
не найден - Лицензия истекла
- Формат файла не поддерживается
Ошибка: The file 'ZendGuardLoader.so' was compiled with an incompatible ABI version
- Это указывает на несоответствие между версией PHP и Zend Guard Loader
- Убедитесь, что вы используете правильную версию Zend Guard Loader под вашу версию PHP
Безопасность
Рекомендации:
- Не размещайте оригинальные исходники на сервере
- Храните лицензию в безопасном месте
- Регулярно обновляйте Zend Guard Loader
- Используйте HTTPS
- Ограничьте доступ к файлам
.php
через.htaccess
Пример блокировки прямого доступа:
<FilesMatch "\.php$">
Order Allow,Deny
Deny from all
</FilesMatch>
Производительность
Zend Guard Loader не влияет существенно на производительность, но:
- Может увеличить время первого запуска из-за дешифрования
- Лучше всего работает с кэшированием
- Настройка zend_loader.memory_limit
может повысить стабильность
Логирование и диагностика
Zend Guard Loader может записывать логи в системные логи PHP или в отдельный файл.
Для включения логирования:
zend_loader.log_file=/var/log/zend_loader.log
Убедитесь, что у пользователя www-data
(или apache
) есть права на запись в этот файл.
Альтернативы
Если вы используете современные версии PHP и не нуждаетесь в защите кода через Zend Guard, рассмотрите следующие альтернативы:
Инструмент | Описание |
---|---|
IonCube Loader | Аналог Zend Guard Loader, поддерживает PHP до 8.2 |
SourceGuardian | Мощный защитник PHP-кода |
PHP Bcompiler | Бесплатная альтернатива для компиляции PHP |
OPcache | Встроенное кэширование байт-кода |
Swoole Compiler | Компилятор PHP-кода в бинарный формат |
PHAR | Архивирование PHP-проектов |