PHP 5.3 + Zend Debugger (и прочие Zend утилиты)

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":
  • 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" исправляем пути к файлам на соответствующие нашим (привожу частично):
Код:
   <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"
6.3 В "php.ini" исправляем или добавляем в конец файла соотв. директивы (комментарии для краткости удалил):
Код:
[ 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
6.4 В каталоге "Apache\conf\" создаем файл "zend.conf" со следующим содержимым:
Код:
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
подключаем этот файл в основном конфиг-е "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\".
 
  • Like
Реакции: riff

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я одного не понимаю - нахрен было ставить какой-то Vertrigo и целиком Zend Server, если все делать руками?

ставишь апач и php из официальных дистрибутивов, скачиваешь одну dll-ку zend debugger, методом copy-paste прописываешь те же 10 строк в php.ini
...
profit! :)
 

tony2001

TeaM PHPClub
Я уже молчу о том, что собсно в Zend Server всё это есть + гуевый инсталлер.
 

macik

Новичок
я одного не понимаю - нахрен было ставить какой-то Vertrigo и целиком Zend Server, если все делать руками?

ставишь апач и php из официальных дистрибутивов, скачиваешь одну dll-ку zend debugger, методом copy-paste прописываешь те же 10 строк в php.ini
...
profit! :)
Видимо не очень доходчего описал цель проделаной работы. Цель была поставить данные компоненты именно на Vertrigo.
(Кто-то пользует Денвер, кто-то сам по отдельности компоненты ставит, мне всегда было удобнее скачать "сборку". Раз в пол года скачиваешь Vertrigo и имеешь свежие версии (apache, mysql, php, phpmyadmin) из коробки + установка и запуск в 1 клик .)
Vertrigo это та сборка с которой я обычно работаю (и она у меня уже была установлена). Поэтому эксперименты и проводи на ней.

Т.к. с первого раза не получилось просто "методом copy-paste прописать те же 10 строк в php.ini", то пришлось скачать Зенд целиком и посмотреть, как подгружаются DLL и прописывается конфигурация там.
Прямых ссылок, где можно выкачать отдельно Зендовские dll я не нашел.

Буду признателен если поделитесь прямой ссылкой.

Я уже молчу о том, что собсно в Zend Server всё это есть + гуевый инсталлер.
Зенд Сервер хорош для определенных целей, никто и не спорит. Если нужно решение (php+apache+debuger) поставил и забыл - почему бы и нет.
Просто у меня была другая задача.
А Зенд мне, в свое время, не приглянулся.
Сейчас уже причины точно не вспомню.
По-моему мне тогда не хватило какого-то софта, который пришлось ставить дополнительно, плюс мне нужна была возможность в один клик стартовать и выгружать сервер, с возможностью переноса с минимумом затрат на аналогичную систему. А зенд помоему ставил все в систему сервисами и еще как-то привязывается к конкретной системе.
Еще как мне кажется если установлен Зенд, будет сложнее обновить отдельно взятый компонент (например php), т.к.зендовские разработчики свалили многие файлы в кучу в каталог "bin". Мне привычнее когда все лежит в своих каталогах - снес, и поставил свежее.

Надеюсь я прояснил ситуацию.
 

riff

Новичок
У тебя хватило терпения ковыряться в настройках и искать зависимости библиотек, мне же, после мучений с установкой php5.3, настолько всё это надоело, что пошёл чуть более простым путём.

С grigory не согласен т.к. не получается скачать и запустить apache + php5.3 + ZendDebugger - они не работают вместе.
С tony2001 так же не согласен - зачем нужен этот gui installer и сидящие в сервисах апач и mysql, если, например, в denwerе это всё работает простым разархивированием и командой run ?

Сейчас попробую запустить всю эту балалайку по рецепту macik'а т.к. меня не устраивает в моём подходе то, что php в ZendServer'е какой-то собственной сборки, хранится в папке zendserver'а и лень разбираться как же его потом обновлять. (И ещё то, что при debug'инге, при долгой паузе, apache перестаёт дожидаться ответа от php и возвращает ошибку (кажется time out), хотя сам процесс отладки не прерывается).

========== 1 час спустя ==========

Сделал практически всё по рецепту. "Практически" потому, что :
а. У меня denwer.
б. Хоть убей не помню то ли в нём уже был apache 2.2.21, то ли я от куда-то скачивал, только, если скачивал, то точно не установщик, а zip. (а папку "apache\conf" взял из денверовского апача)
в. Повторюсь: ZendServer я устанавливал на виртуальную машину, что бы эту не загаживать, а все dll, cfg, ... брал с виртуальной установки.
г. В папке lib у меня не было подпапки loader
д.
Прописываем в переменную среды PATH пути к каталогам "полный_путь\zend\bin\" и "полный_путь\php\"
Я лично ничего не прописывал. После запуска в PATH само появилось "zend\bin", а "...\php" не появилось, но и без этого работает.

Короче всё запустилось и работает.
 

macik

Новичок
У тебя хватило терпения ковыряться в настройках и искать зависимости библиотек, мне же, после мучений с установкой php5.3, настолько всё это надоело, что пошёл чуть более простым путём.
Я просто логически рассудил, что лучше 1 раз разобраться как оно работает, а потом без лишних хлопот просто обновлять компоненты по необходимости. К тому же мной еще и дух экспериментатора руководил - я хотел на одной сборке php5.3 (на одних и тех же версиях) иметь возможность на выбор запускать XDebug или ZendDebugger. Чего в результате и добился.

А денвер уважаю но, не люблю, т.к. не нравиться мне когда в системе виртуальные диски создаются. Но это вопрос привычки.

д. Я лично ничего не прописывал. После запуска в PATH само появилось "zend\bin", а "...\php" не появилось, но и без этого работает.
Возможно сам Зенд прописал свой "bin" в PATH.

Главное - рад, что получилось.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
- зачем
как вам такая причина: чтобы научиться это делать и брать за это деньги с клиентов или более высокую зарплату
у меня это 7 лет назад получилось
 

riff

Новичок
Grigory:
отставим в сторону моё неумение установить и настроить apache : )
а на счёт "ставишь апач и php из официальных дистрибутивов, скачиваешь одну dll" и "7 лет назад получилось" - Спорим у тебя (можно на ты?) нет сейчас связки windows + apache + Php5.3 + ZendDebugger ?
 

serviom

Новичок
Здраствуйте Riff а можна просто прислать мне ZendDebager.dll ? Мо
 
Сверху