Отладка PHP скриптов.

Программисту PHP для проверки результатов работы разрабатываемых скриптов и их отладки требуется определенный набор инструментальных средств, который включает:

Все эти составляющие можно установить и настроить отдельно и по очереди. Но все это занимает довольно много времени и следует знать много тонкостей при установке и настройке. Также после установки желательно иметь общий центр управления всем комплексом. Есть готовые пакеты которые устанавливают все эти составляющие - Денвер, JSAS, XAMPP, EasyPHP, Dreamserver. Все они по своему хороши, но мне при поиске в Интернете попался пакет Application Server (сокращенно AppServ). Простой в установке и настройке, удобный в управлении и, что самое важное, никогда не создавал мне проблем во время работы. Рекомендую!

При отладке можно пользоваться функциями PHP - var_damp(), die() или просто выводить отладочные сообщения при помощи echo. Но такой способ создает определенные трудности при отладке больших проектов, включающих много файлов. В настоящее время существуют интегрированные средства разработки  IDE, включающие в себя редакторы кода со всеми современными возможностями, встроенный отладчик, профайлер, FTP-клиент и т.д. В данной статье будет рассмотрены 2 таких продукта:

Также следует упомянуть о мощной, современной, бесплатной среде PHP Development Tools  - последняя версия на сегодняшний день PDT 2.1-SR1 -http://www.eclipse.org/pdt/downloads/. Здесь она рассматриваться не будет, так как даже для обзора этой IDE требуется отдельная большая статья.

Установка и настройка AppServ

Итак, для того чтобы приступить к работе, нужен сам пакет AppServ от разработчика, известного под псевдонимом apples.
Скачать пакет можно на официальном сайте разработчика - http://www.appservnetwork.com/.

Разработчик apples практически всегда в своих новых выпусках AppServ использует самые новые программные обеспечения, такие как: Apache, PHP, MySQL, phpMyAdmin.
Однако следует знать, что пакеты AppServ совместимы и разработаны для операционных систем WIN32.

Итак Вы сделали свой выбор программного пакета и загрузили его на свой компьютер. Начинаем установку двойным щелчком мышки по иконке AppServ.

 
Пакет 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 5

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:

Кнопка 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:

 

PHP Expert Editor

PHP Expert Editor - редактор PHP скриптов и HTML страниц. Имеет встроенный браузер, отладчик, FTP-клиент, настраиваемые шаблоны кода, настраиваемый интерфейс и т.п. PHP Master Editor внешне простой и удобный, но вместе с тем мощный инструмент созданный специально для PHP программистов.
Свойства программы:
  • Встроенный браузер
  • Подсветка синтаксиса
  • Встроенный FTP-клиент
  • Запуск скриптов и просмотр результата во встроенном браузере без web-сервера
  • Поддержка всех известных Content-Type. Вы можете отлаживать скрипты, которые генерируют различный контент, например картинки.
  • Отображение ошибок и предупреждений в соответствии с настройками PHP
  • Поддержка PHP расширений
  • Настраиваемые Шаблоны Кода для быстрой вставки часто употребляемых фрагментов
  • Возможность задания входных данных и переменных окружения для отладки
  • Экспорт исходного текста в HTML с подсветкой синтаксиса
  • Закладки
  • Настраиваемый интерфейс
  • Keymaping (Default, Classic, Brief, Epsilon, Visual Studio)
  • Поддержка файлов форматов Windows, Unix, Mac

Процесс отладки в 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> после имени скрипта добавляем переменную отладки:

?DBGSESSID=1@clienthost:7869

Так чтобы строка выглядела так - <form action="processorder.php?DBGSESSID=1@clienthost:7869" method=post>.

Теперь при запуске на отладку html формы мы будем сразу попадать в отладчик. Достоинство этого метода в том, что форму можно загрузить в любой web-браузер и при нажатии кнопки "Submit" попадаем в окно отладчика PHP Expert Editor! Т.е таким способом можно осуществлять удаленную отладку. Здесь только надо не забыть удалить переменную отладки после завершения работы.

 

Надеюсь что данная статья поможет Вам в трудном деле отладки PHP скриптов!


Copyright © 2009
Created by Veacheslav Movila E-mail: Web-design
Хостинг от uCoz