Skip to content

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:

  1. Скачайте Zend Guard Loader с официального сайта
  2. Распакуйте архив:
tar -xzf zend-loader-php5.6-linux-x86_64.tar.gz
  1. Скопируйте .so файл в директорию модулей PHP:
sudo cp zend-loader-php5.6-linux-x86_64/ZendGuardLoader.so /usr/lib/php/20131226/
  1. Создайте конфигурационный файл:
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
  1. Активируйте модуль:
sudo phpenmod zend-loader
sudo systemctl restart apache2

На CentOS/RHEL:

  1. Скачайте Zend Guard Loader.
  2. Распакуйте и скопируйте ZendGuardLoader.so в /usr/lib64/php/modules/
  3. Создайте файл /etc/php.d/zend-loader.ini со следующим содержанием:
zend_extension=/usr/lib64/php/modules/ZendGuardLoader.so
zend_loader.enable=1
zend_loader.obfuscation_level_support=3
  1. Перезапустите 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-проектов

Сообщество и поддержка

Официальные источники: