За последние 24 часа нас посетили 7789 программистов и 496 роботов. Сейчас ищут 199 программистов ...

Установка Zend Gard Loader на PHP 5.3

Тема в разделе "Вопросы от блондинок", создана пользователем Ensiferum, 19 авг 2011.

  1. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.290
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    Понадобилось зазендить скрипты. Рабочая сборка PHP 5.3.5. Откат на 5.2.x не приемлем, так что отталкиваемся от 5.3.x и тут начинается интересное:

    1) Для 5.2.x и ранее был Zend Optimizer, который ставился без бубна и работал толково, в 5.3.х же ввели Zend Loader
    2) Zend Loader работает только в FastCGI
    3) Мануала нигде нет

    Тренеровался на денвере. Итог:

    в папку apache добавляются файлы:
    • bin/ZendEnablerApache.php
      bin/ZendEnablerConf.xml
      bin/ZendEnablerConf.xsd
      bin/zlib1.dll
      bin/libmysql.dll (так и не понял, почему этот файл здесь, а не с PHP)
      bin/xerces-c_3_0.dll
      bin/QtCore4.dll
      bin/QtNetwork4.dll
      bin/QtSql4.dll
      bin/QtXml4.dll
      bin/libeay32.dll - заменил на новый из zend server
      bin/ssleay32.dll - заменил на новый из zend server
      conf/zend.conf

    в папку php5 добавляются файлы:
    • ZendLib.dll
      ZendExtensionManager.dll
      zend.ini
      loader/php-5.3.x/ZendLoader.php
      php-cgi.exe - заменил на новый из zend server
      php5.dll - скопировал из zend server, отличается от php5ts.dll

    Содержимое ZendEnablerConf.xml:
    Код (Text):
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <ZendEnablerConfiguration version="2.0"
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4.     xsi:noNamespaceSchemaLocation="ZendEnablerConf.xsd">
    5.     <Global>
    6.         <LogFile path="ZendEnabler.log" verbosity="0" maxFileSizeKB="100" />       
    7.     </Global>
    8.     <DefaultPool impersonation="true">
    9.         <Environment>
    10.             <Variable name="DB2INSTANCE" value="DB2" />
    11.             <Variable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
    12.             <Variable name="TEMP" value="tmp" />
    13.             <Variable name="PHPRC" value="\usr\local\php5\zend.ini" />
    14.             <Variable name="PATH" value="c:\Windows\system32;c:\Windows;c:\Windows\System32\Wbem;c:\Windows\System32\WindowsPowerShell\v1.0\;" />
    15.         </Environment>
    16.         <ProcessCount start="2" extra="8"/>
    17.         <Timeouts connectionTimeout="60" requestTimeout="120" />
    18.     </DefaultPool>
    19.     <ServerPool mimeType="application/x-httpd-php" commandLine="\usr\local\php5\php-cgi.exe" impersonation="true">
    20.     </ServerPool>
    21. </ZendEnablerConfiguration>
    Содержимое zend.conf:
    Код (Text):
    1. LoadModule zend_enabler_module "bin\ZendEnablerApache.dll"
    2. ZendEnablerConfig "ZendEnablerConf.xml"
    3.  
    4. AddHandler zend-enabler-script .php
    5. AddType application/x-httpd-php .php  
    Содержимое zend.ini:
    Код (Text):
    1. [Zend]
    2. fastcgi.impersonate=1
    3. cgi.fix_pathinfo = 1
    4. zend_extension="\usr\local\php5\ZendExtensionManager.dll"
    5.  
    6.  
    7. [Zend.extension_manager]
    8. zend_extension_manager.log_verbosity_level=1
    9. zend_extension_manager.load_order_file=zem_order
    10.  
    11.  
    12. [Zend.loader]
    13. zend_extension_manager.dir.loader="\usr\local\php5\loader"
    14. zend_loader.enable=1
    15. zend_loader.disable_licensing=0
    16. zend_loader.obfuscation_level_support=3
    17. zend_loader.license_path=
    Теперь внимание, вопрос знатокам: иожно как-нибудь полегче интеграцию провести?
     
  2. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.290
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    Никто не сталкивался?
     
  3. mck79

    mck79 Активный пользователь

    С нами с:
    30 май 2011
    Сообщения:
    4
    Симпатии:
    0
    Вариант 2:

    Тоже задался целью прикрутить Зенд к 5.3. Главным образом мне нужен был ЗендДебаггер.
    Жаль эту статью нашел уже после после проделанной работы.

    Т.к. "убил" на это почти 3 дня, делюсь своим рецептом (он несколько отличается) - может кому пригодится.
    Среда: windows XP sp3. x86.

    За основу был взят набор софта из сборки VertrigoServer (http://vertrigo.sourceforge.net/). Это сборка типа "Денвера" для запуска веб-сервера на локальной машине. (туда входит apache, mysql, php, phpmyadmin, sqlite)

    Вариантов решения задачи и их комбинации было опробовано множество, опишу только конечный рабочий вариант.

    1. php 5.3.6 thread safe ("из коробки") - был заменен на 5.3.8 non thread safe (nts вариант принципиален т.к. Zend не работает на ts версии). http://windows.php.net/downloads/releases/php-5.3.8-nts-Win32-VC9-x86.zip

    2. apache 2.2.17 заменил свежим apache 2.2.21 (если используете Vertrigo можно и не обновлять 2.2.17 сгодится)
    http://www.sai.msu.su/apache//httpd/binaries/win32/httpd-2.2.21-win32-x86-openssl-0.9.8r.msi

    3. скачал "Zend Server Community Edition" и установил в отдельный каталог. Отсюда дергал все необходимые компоненты.
    http://downloads.zend.com/zendserver/5.5.0/ZendServer-CE-php-5.3.8-5.5.0-Windows_x86.exe

    4. Создал каталог "zend" в общей с php и apache папке. В папке "zend" создаем подкаталоги bin, etc, lib, logs, tmp. Эта структура каталогов частично повторяет ту, что использует "ZendServer". В результате экспериментов, я решил для экономии сил и простоты последующего обновления, ее не менять.

    Далее приведу список какие именно файлы скопировать в наш "zend" (файлы беруться из соответствующих каталогов в "ZendServer"):
    4.1. "bin":
    • libpq.dll
      QtCore4.dll
      QtNetwork4.dll
      QtSql4.dll
      QtXml4.dll
      xerces-c_3_0.dll
      ZendEnablerApache.dll
    4.2. "etc":
    • zem_order
      ZendEnablerConf.xml
      ZendEnablerConf.xsd
      а так же полностью подкаталог "cfg"
    4.3 "lib": папки:
    • debugger
      loader
      optimizerplus
      utils
    и сам файл ZendExtensionManager.dll
    4.4 папки logs и tmp остаются пустыми.

    5. В каталог "php" копируем файл "ZendLib.dll" из "ZendServer\bin"
    6. Настраиваем файлы конфигурации.
    6.1 В каталоге "zend\etc\cfg" отключаем ненужные нам утилиты datacache и javabridge путем переименовывания или удаления одноименных файлов. (я переименовывал в datacache.ini-skip и jbridge.ini-skip)
    6.2 В "zend\etc\ZendEnablerConf.xml" исправляем пути к файлам на соответствующие нашим (привожу частично):
    Код (Text):
    1.    <LogFile path="полный_путь\zend\logs\ZendEnabler.log" verbosity="0" maxFileSizeKB="100" />
    2.       <Variable name="TEMP" value="полный_путь\zend\tmp" />
    3.       <Variable name="PHPRC" value="полный_путь\zend\etc" />
    4.       <Variable name="PATH" value="полный_путь\zend\bin;" />
    5.   <ServerPool mimeType="application/x-httpd-php" commandLine="полный_путь\php\php-cgi.exe" impersonation="true"
    6.3 В "php.ini" исправляем или добавляем в конец файла соотв. директивы (комментарии для краткости удалил):
    Код (Text):
    1. [ Zend ]
    2. fastcgi.impersonate = 1;
    3. cgi.fix_pathinfo = 1
    4. zend_extension="полный_путь\zend\lib\ZendExtensionManager.dll"
    5. zend.install_dir="полный_путь\zend"
    6. zend.conf_dir="полный_путь\zend\etc\"
    7. zend.temp_dir="полный_путь\zend\tmp"
    8. zend.log_dir="полный_путь\zend\logs"
    9. zend.ini_scandir=cfg
    10.  
    11. [ Zend.extension_manager ]
    12. zend_extension_manager.log_verbosity_level=1
    13. zend_extension_manager.load_order_file=zem_order
    6.4 В каталоге "Apache\conf\" создаем файл "zend.conf" со следующим содержимым:
    Код (Text):
    1. LoadModule zend_enabler_module  "полный_путь\zend\bin\ZendEnablerApache.dll"
    2. ZendEnablerConfig "полный_путь\zend\etc\ZendEnablerConf.xml"
    3. AddHandler zend-enabler-script .php .phtml .php5
    4. AddType application/x-httpd-php .php .phtml .php5  
    подключаем этот файл в основном конфиг-е "httpd.conf" через: "Include conf/zend.conf"

    Вроде бы все. Итого имеем:
    This program makes use of the Zend Scripting Language Engine:
    Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
    with Zend Extension Manager v5.1, Copyright (c) 2003-2010, by Zend Technologies
    - with Zend Guard Loader v3.3, Copyright (c) 1998-2010, by Zend Technologies [loaded] [licensed] [enabled]
    - with Zend Utils v1.0, Copyright (c) 2004-2010, by Zend Technologies [loaded] [licensed] [enabled]
    - with Zend Optimizer+ v4.1, Copyright (c) 1999-2010, by Zend Technologies [loaded] [licensed] [enabled]
    - with Zend Debugger v5.3, Copyright (c) 1999-2010, by Zend Technologies [loaded] [licensed] [enabled]

    Предложенный вариант удобен с точки зрения последующего обновления т.к. все дополнительные файлы (кроме ZendLib.dll) лежат отдельно, а оригинальные файлы в каталогах установки Apache или php не меняются (за исключением файлов настройки). При необходимости отключить не нужную Zend утилиту можно простым переименованием соответствующего ей .ini файла в каталоге "zend\etc\cfg\".
     
  4. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.290
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    а я забил на это дело и поставил ionCube