macik
Новичок
Тоже задался целью прикрутить Зенд к PHP 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":
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" исправляем пути к файлам на соответствующие нашим (привожу частично):
6.3 В "php.ini" исправляем или добавляем в конец файла соотв. директивы (комментарии для краткости удалил):
6.4 В каталоге "Apache\conf\" создаем файл "zend.conf" со следующим содержимым:
подключаем этот файл в основном конфиг-е "httpd.conf" через: "Include conf/zend.conf"
Прописываем в переменную среды PATH пути к каталогам "полный_путь\zend\bin\" и "полный_путь\php\"
Вроде бы все. Итого имеем:
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\".
Т.к. "убил" на это почти 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
- zem_order
ZendEnablerConf.xml
ZendEnablerConf.xsd
а так же полностью подкаталог "cfg"
- debugger
loader
optimizerplus
utils
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" исправляем пути к файлам на соответствующие нашим (привожу частично):
Код:
<LogFile path="полный_путь\zend\logs\ZendEnabler.log" verbosity="0" maxFileSizeKB="100" />
<Variable name="TEMP" value="полный_путь\zend\tmp" />
<Variable name="PHPRC" value="полный_путь\zend\etc" />
<Variable name="PATH" value="полный_путь\zend\bin;" />
<ServerPool mimeType="application/x-httpd-php" commandLine="полный_путь\php\php-cgi.exe" impersonation="true"
Код:
[ Zend ]
fastcgi.impersonate = 1;
cgi.fix_pathinfo = 1
zend_extension="полный_путь\zend\lib\ZendExtensionManager.dll"
zend.install_dir="полный_путь\zend"
zend.conf_dir="полный_путь\zend\etc\"
zend.temp_dir="полный_путь\zend\tmp"
zend.log_dir="полный_путь\zend\logs"
zend.ini_scandir=cfg
[ Zend.extension_manager ]
zend_extension_manager.log_verbosity_level=1
zend_extension_manager.load_order_file=zem_order
Код:
LoadModule zend_enabler_module "полный_путь\zend\bin\ZendEnablerApache.dll"
ZendEnablerConfig "полный_путь\zend\etc\ZendEnablerConf.xml"
AddHandler zend-enabler-script .php .phtml .php5
AddType application/x-httpd-php .php .phtml .php5
Прописываем в переменную среды PATH пути к каталогам "полный_путь\zend\bin\" и "полный_путь\php\"
Вроде бы все. Итого имеем:
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\".