|
Программисту PHP для проверки результатов работы разрабатываемых скриптов и их отладки требуется определенный набор инструментальных средств, который включает:
Web-сервер
Интерпретатор PHP, интегрированный в Web-сервер
Сервер баз данных
Скрипт управления базами данных MySQL - phpMyAdmin.
Все эти составляющие можно установить и настроить отдельно и по очереди. Но все это занимает довольно много времени и следует знать много тонкостей при установке и настройке. Также после установки желательно иметь общий центр управления всем комплексом. Есть готовые пакеты которые устанавливают все эти составляющие - Денвер, JSAS, XAMPP, EasyPHP, Dreamserver. Все они по своему хороши, но мне при поиске в Интернете попался пакет Application Server (сокращенно AppServ). Простой в установке и настройке, удобный в управлении и, что самое важное, никогда не создавал мне проблем во время работы. Рекомендую!
При отладке можно пользоваться функциями PHP - var_damp(), die() или просто выводить отладочные сообщения при помощи echo. Но такой способ создает определенные трудности при отладке больших проектов, включающих много файлов. В настоящее время существуют интегрированные средства разработки IDE, включающие в себя редакторы кода со всеми современными возможностями, встроенный отладчик, профайлер, FTP-клиент и т.д. В данной статье будет рассмотрены 2 таких продукта:
Zend Studio 5 - это среда разработки, позволяющая вести написание и отладку PHP-приложений, выпущенная известной компанией Zend Technologies.
PHP Expert - среда разработки, немного попроще, но тем не менее очень удобная и мощная, пригодная для разработки проектов любой сложности, бесплатная для граждан СНГ.
Также следует упомянуть о мощной, современной, бесплатной среде PHP Development Tools - последняя версия на сегодняшний день PDT 2.1-SR1 -http://www.eclipse.org/pdt/downloads/. Здесь она рассматриваться не будет, так как даже для обзора этой IDE требуется отдельная большая статья.
Итак,
для того чтобы приступить к работе, нужен сам пакет AppServ от разработчика,
известного под псевдонимом apples.
Скачать пакет можно на официальном сайте разработчика -
http://www.appservnetwork.com/.
Разработчик apples
практически всегда в своих новых выпусках AppServ использует самые
новые программные обеспечения, такие как: Apache, PHP, MySQL, phpMyAdmin.
Однако следует знать, что пакеты AppServ совместимы и разработаны для
операционных систем WIN32.
Итак Вы сделали свой выбор программного пакета и загрузили его на свой
компьютер. Начинаем установку двойным щелчком мышки по иконке AppServ.
Окно приветствия - это первое, что вы увидите. Нажмите кнопку Next для продолжения установки.
Во втором окне вы должны согласиться с лицензией GNU/GPL, нажав кнопку I Agree.
В третьем окне нужно выбрать
установочный путь (по умолчанию: C:\AppServ). Если у вас несколько твердых
дисков или один,
но поделен на несколько частей, рекомендую выбрать другой, не системный
диск. Например: D:\AppServ и после нажать кнопку Next.
В четвертом окне будет предложен выбор установочных компонентов, отметьте все 4 компонента и затем нажмите кнопку Next.
В пятом окне, в поле Server
Name укажите localhost, в поле Administrator's Email Address
укажите ваш e-mail адрес,
в поле Apache HTTP Port оставьте умолчание - 80 и нажмите кнопку
Next.
В шестом окне
обязательно нужно указать в поле Enter root password пароль для
доступа к MySQL и в следующем поле повторите
этот пароль для подтверждения(запишите его, он нужен для авторизации в
phpMyAdmin).
В поле Character Sets and Collations, из выпадающего списка выберите
предпочитаемую вами кодировку
(в принципе она неважна , оставьте как есть). Остальное по умолчанию и
нажмите кнопку Next.
И наконец, для завершения установки, отметьте галочкой Start Apache и Start MySQL для запуска этих служб после нажатия кнопки Finish.
Пакет AppServ установлен, необходимые службы запущены.
Службы Apache и MySQL будут запускаться автоматически при каждой загрузке
операционной системы.
Панель управления установленными компонентами находится:
- Пуск
- Все программы
- AppServ
Настройка AppServer:
- Пуск
- Все программы
- AppServ
- Configuration Server
- PHP Edit the php.ini Configuration File
Вам надо изменить линию - ;extension=php_mssql.dll - удалите символ (;) -
раскомментируйте.
и линию mssql.secure_connection = Off ( Оff изменить на Оn ). Сохраните файл.
Настройка HTTPD и PHP.
Настройка HTTPD:
- Пуск
- Все программы
- AppServ
- Configuration Server
- Apache Edit the httpd.conf Configuration File
Из меню Правка выберите Найти... В поле для поиска укажите: rewrite_module
Раскоментируйте его, убрав символ "#" и сохраните.
Настройка PHP:
- Пуск
- Все программы
- AppServ
- Configuration Server
- PHP Edit the php.ini Configuration File
Из меню Правка выберите Найти... В поле для поиска укажите: register_globals
Для безопасности рекомендуется отключить
register_globals = Off
Всё остальное можно оставить без изменений и сохранить настройки.
Теперь перезапустить службу Apache.
- Пуск
- Все программы
- AppServ
- Control Server by Service
- Restart Apache
Сервер готов к работе!
- Корневая директория сервера находится здесь: (буква диска, где установлен
AppServ):\AppServ\www
- Адрес сервера: http://localhost/ или http://127.0.0.1/ или http://ВАШ-IP-АДРЕС/
- Адрес к интерфейсу phpMyAdmin: http://localhost/phpMyAdmin/
- Логин для авторизации в phpMyAdmin: root
- Пароль для авторизации в phpMyAdmin: тот, который вы указывали в процессе
установки пакета AppServ
Перед установкой CMS (DLE, PHP-NUKE, JOOMLA, PHP-FUSION, IPB и т.д.) не
забудьте
создать Имя базы данных через интерфейс phpMyAdmin
Zend Studio – это среда разработки, позволяющая вести написание
и отладку PHP-приложений, выпущенная известной компанией Zend Technologies.
Отличительной особенностью Zend Studio является возможность удаленной отладки и
профайлинга. Отметим, что для удаленной отладки требуется установить Zend Studio
Server, который представляет собой серверный модуль.
В состав Zend Studio в качестве опции входит пакет PHP вместе с обширным списком
предварительно скомпилированных расширений. Если у вас уже установлена
предварительно сконфигурированная версия PHP, продукт Zend Studio легко
интегрируется с ней.
Также в пакет среды Zend входит Zend Optimizer, являющийся серверным модулем для
запуска закодированных с помощью Zend Encoder и Zend SafeGuard Suite скриптов, а
также немного их ускоряющий (до 40%).
Настройки
После установки Zend Studio, необходимо установить библиотеку для отладки.
Ссылка для скачивания - ZendDebugger.
Останавливаем веб-сервер. Выбираем в архиве версию,
соответствующую вашей версии php, и копируем ее в каталог с PHP-библиотеками(..\php\ext\).
Далее открываем php.ini и добавляем туда следующие строки:
[Zend]
zend_extension_ts=path/ZendDebugger.dll
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always
path - полный путь к
установленной библиотеке.
Запускаем сервер и вызываем функцию phpinfo(). В сведениях об установленной
среде должна появиться следующая секция:
Следует настроить среду:
Tools>Preferences>Debug и вносим изменения, согласно
скриншоту:
Файл dummy.php копируем в папку проекта или в корневой каталог Вашего сервера.
Далее устанавливаем Zend Studio Toolbar - панель инструментов встраиваемую в браузер, что повышает удобство отладки и является преимуществом перед другими отладчиками.
Версия панели для Microsoft
Internet Explorer поставляется вместе с Zend Studio и устанавливается в браузер
во время инсталляции среды (возможна и ручная установка с использованием
regsvr32.exe ZendIEToolbar.dll в директории с Zend Studio. Обычно это C:\Program
Files\Zend\bin\).
Для Mozilla Firefox панель пока еще не входит в дистрибутив - скачать
Zend_Studio_Toolbar_1.0.7.xpi.
В Internet Explorer панель выглядит следующим образом:
В Mozilla Firefox панель выглядит аналогично.
Кнопка Zend Studio запускает среду разработки с одноименным
названием. При необходимости путь до главного файла ZDE.exe прописывается в
настройках панели.
Кнопка Debug запускает по умолчанию отладку текущей страницы. Но существует
расширенное меню, которое позволяет четко выбрать схему отладки.
Подменю кнопки Debug:
Current page (текущая страница) – запускает отладку текущей страницы.
Next page (Next page on this site) (следующая страница) – начинает отладку со следующей страницы. Это нужно, например, если страница требует ввести логин или пароль.
All forms (POST) on this site (все формы на сайте) – производит отладку форм на сайте. Если выбран этот режим, то отладка будет включаться только при нажатиях Submit в формах.
ll pages on this site (все страницы на сайте) – заставляет отладчик запускаться на каждой странице сайта. Отключается нажатием на Stop в Zend Studio.
Кнопка Profile вызывает профайлинг текущей
страницы. Он позволяет определить, какая функция и в каком файле замедляет весь
скрипт, а также посмотреть информацию о всех задействованных функциях,
количестве их вызовов, занимаемом времени для работы, а также массу другой
полезной информации для полноценной отладки проекта.
Служебное меню Extra Stuff практически одинаково для обеих версий панели. Оно содержит настройки панели и ссылки на различные Zend- и PHP-ресурсы в Интернете.
Можно начинать отладку!
Запускаем среду разработки и открываем файл проекта для отладки. Устанавливаем breakpoint в нужных точках. В браузере открываем файл формы. Нажимаем кнопку Debug в Zend Studio Toolbar. Заполняем форму и нажимаем кнопку Submit. Запускается процесс отладки и происходит останов в установленной в среде разработки точке (breakpoint). Можно выполнить все действия отладки - просмотреть переменные, изменить данные и т.д.
Русский язык интерфейса
По
умолчанию Zend Studio не позволяет изменить язык интерфейса на русский. Так вот,
есть довольно простой способ, который поможет сделать это.
Нужно перейти в каталог с настройками (config_5.0 для Zend Studio 5.0 и
config_5.1 для версии 5.1). Обычно он находится в C:\Documents and Settings\Your_login\ZDE\.
Затем необходимо открыть файл desktop_options.xml и найти следующие строки:
<customized_property ID="desktop.language">
<locale language="en" country="" variant=""/>
</customized_property>
Здесь нужно всего лишь изменить атрибут language на ru и атрибут country на RU.
Сглаживание шрифтов
С
настройкой сглаживания шрифтов (anti-aliasing) также никаких проблем при работе
не возникнет. В каталоге bin уже установленной программы Zend Studio 5 нужно
найти файл ZDE.lax и строку lax.nl.java.option.additional=-Dsun.java2d.noddraw=true,
где через пробел добавить следующее: -Dswing.aatext=true. После этих манипуляций
сглаживание шрифтов включится.
Ускорение работы Zend Studio 5
Вообще, на данный момент известно три способа ускорения работы Zend Studio 5:
В каталоге bin установленной Zend Studio необходимо найти файл ZDE.lax и строку lax.nl.java.option.additional=-Dsun.java2d.noddraw=true. К ней через пробел нужно добавить следующее: -Dswing.noxp=true.
Второй вариант ускорения – это увеличение памяти, выделяемой под работу java-машины. Для этого необходимо найти в файле ZDE.lax строчку lax.nl.java.option.java.heap.size.max и указать там количество памяти, которое пользователь желает отдать java-машине. Например, чтобы отдать половину от 512 мегабайт, надо указать: 268435456.
Также для ускорения работы Zend Studio 5 можно установить Zend Optimizer
|
Процесс отладки в PHP Expert Editor
PHP Expert Editor в качестве инструмента отладки использует Expert Debugger.
Expert Debugger - бесплатный удобный в работе инструмент для
того, чтобы отлаживать сценарии PHP.
Expert Debugger использует DBG PHP Debugger(Nusphere Corporation,
http://www.nusphere.com/dbg) и
позволяет отлаживать сценарии через сеть или на местном компьютере. Вы можете
выполнять сценарии в пошаговом режиме и отслеживать значения любых переменных и
вывод сценария. Отладчик имеет удобный интерфейс и может быть встроен в
интегрированную среду разработки или редактор. В нашем случае Expert Debugger
встроен в IDE PHP Expert Editor.
Expert Debugger отображает процесс отладки - это визуальный компонент в этом механизме. Главный модуль - DBG PHP Debugger. DBG PHP Debugger управляет всеми процессами отладки. Отладка начинается с запросом браузера на сервер сети. Expert Debugger не может самостоятельно инициализировать отладку. Отладка инициализируется только специальным запросом на сервер сети. Когда PHP-сценарий стартует, часть сервера DBG PHP Debugger (модуль PHP php_dbg.dll) соединяется с клиентским компьютером и посылает информацию об отладке. Клиентское программное обеспечение (DbgListener.exe) должно быть активным на клиентском компьютере. Тогда DBG PHP Debugger стартует Expert Debugger. Expert Debugger показывает окно отладки и код сценария. Когда Вы управляете отладкой, Expert Debugger посылает операции в сервер через DBG PHP Debugger. Информация о значениях переменных Expert Debugger получает от сервера через DBG PHP Debugger. Подключение между Сервером и Клиентом закрывается, когда отладка закончена.
Настройка отладчика PHP Expert Editor
Следует сконфигурировать серверную часть отладчика. Клиентская часть конфигурируется автоматически при инсталляции программы.
Для конфигурации серверной части следует:
1. Скопировать библиотеку php_dbg.dll в директорию с другими инсталлированными расширениями PHP(..\php\ext\). Библиотека php_dbg.dll входит в дистрибутив PHP Expert Editor.
2. В файле php.ini сразу после секции динамических расширений следует вставить секцию:
; отладка в PHP Expert
[Debugger]
extension=php_dbg.dll
debugger.enabled=true
debugger.profiler_enabled=true
3. После этого следует рестартовать web-сервер. Проверить настройку можно вызвав функцию phpinfo(). В отчете должна появиться секция:
Отладчик можно настроить более детально внеся в секцию Debugger дополнительные параметры, например:
[Debugger]
extension=php_dbg.dll
debugger.enabled = true
debugger.JIT_enabled = true
debugger.JIT_host = clienthost
debugger.JIT_port = 7869
debugger.fail_silently = 1
debugger.timeout_seconds = 300
debugger.ignore_nops = 0
debugger.enable_session_cookie = 1
debugger.session_nocache = 1
debugger.profiler_enabled = 1
debugger.JIT_level = 3
4. PHP, по умолчанию, буферизирует вывод - эту опцию необходимо отключить в php.ini. Иначе результаты могут не отображаться при отладке. Для этого следует отключить опцию output_buffering в файле php.ini - output_buffering = off.
Можно начинать отладку!
Во время отладки можно просматривать значения переменных, контролировать вывод скрипта. Также осуществляется профилирование скрипта - можно просмотреть сколько времени заняло выполнение функции в заданной строке и сколько раз она вызывалась. Об отладке следует прочесть в справке к PHP Expert Editor. Единственное о чем хочу сказать, что значения переменных в hint и вкладке "Value of variable" я мог видеть только после клика левой клавишей мыши на данной переменной, а не просто устанавливая курсор мыши на переменной как указано в справке.
Рассмотрим принцип отладки, когда существует html форма и модуль php для ее обработки. Если загрузить оба файла в PHP Expert Editor и запустить отладку html формы, то отладка не активизируется. Все верно, т.к. не был инициирован процесс отладки описанный выше - нет старта PHP скрипта и DBG PHP Debugger не соединяется с клиентским компьютером. Есть 2 способа заставить работать такую схему отладки.
Следует загрузить все необходимые файлы в PHP Expert Editor. Для удобства в менеджере кода кликнуть правой кнопкой мыши в менеджере кода и в "настройках разбора" выбираем "разбирать все файлы".
Есть html форма:
<html>
<head>
<title>Bob's Auto Parts</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<h2>Order Form</h2>
<form action="processorder.php" method=post>
<table border=0>
<tr bgcolor=#cccccc>
<td width=150>Item</td>
<td width=15>Quantity</td>
</tr>
<tr>
<td>Tyres</td>
<td align=center><input type="text" name="tyreqty" size=3 maxlength=3></td>
</tr>
<tr>
<td>Oil</td>
<td align=center><input type="text" name="oilqty" size=3 maxlength=3></td>
</tr>
<tr>
<td>Spark Plugs</td>
<td align=center><input type="text" name="sparkqty" size=3 maxlength=3></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value="Submit Order"></td>
</tr>
</table>
</form>
</body>
</html>
И скрипт PHP ее обрабатывающий:
<html>
<head>
<title>Bob's Auto Parts - Order Results</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<h2>Order Results</h2>
<?
echo "<p>Order processed at "; // Start printing order
echo date("H:i, jS F");
echo "<br>";
echo "<p>Your order is as follows:";
echo "<br>";
echo $tyreqty." tyres<br>";
echo $oilqty." bottles of oil<br>";
echo $sparkqty." spark plugs<br>";
$totalqty = 0;
$totalamount = 0.00;
define("TYREPRICE", 100);
define("OILPRICE", 10);
define("SPARKPRICE", 4);
$totalqty = $tyreqty + $oilqty + $sparkqty;
$totalamount = $tyreqty * TYREPRICE
+ $oilqty * OILPRICE
+ $sparkqty * SPARKPRICE;
$totalamount = number_format($totalamount, 2);
echo "<br>\n";
echo "Items ordered: ".$totalqty."<br>\n";
echo "Subtotal: $".$totalamount."<br>\n";
$taxrate = 0.10; // local sales tax is 10%
$totalamount = $totalamount * (1 + $taxrate);
$totalamount = number_format($totalamount, 2);
echo "Total including tax: $".$totalamount."<br>\n";
?>
</body>
</html>
1-ый способ.
Для начала первым следует запустить для отладки PHP скрипт обрабатывающий форму и выполнить его до конца, несмотря на то, что отладчик будет ругаться на неопределенные входные глобальные переменные. Этой процедурой мы установили связь клиентской и серверной части отладчика. Можно запускать на выполнение html форму. Теперь при нажатии кнопки "Submit" попадаем в окно отладчика. Так мы можем работать только в среде IDE PHP Expert Editor.
2-ой способ.
В строке html формы указывающей на вызываемый скрипт - <form action="processorder.php" method=post> после имени скрипта добавляем переменную отладки:
Так чтобы строка выглядела так - <form action="processorder.php?DBGSESSID=1@clienthost:7869" method=post>.
Теперь при запуске на отладку html формы мы будем сразу попадать в отладчик. Достоинство этого метода в том, что форму можно загрузить в любой web-браузер и при нажатии кнопки "Submit" попадаем в окно отладчика PHP Expert Editor! Т.е таким способом можно осуществлять удаленную отладку. Здесь только надо не забыть удалить переменную отладки после завершения работы.