Я использую Eclipse и XDebug для разработки приложения PHP, которое полагается на веб-сервисы. У меня есть тестовые страницы, которые используют мои сервисы 2 способами: Ajax (использующий jQuery) и ЗАВИХРЕНИЕ.
Я добавляю точки останова к своей сервисной странице и запускаю отладчик. Когда я называю сервис от Ajax, выполнение останавливается приятно в точке останова, и я получаю свои переменные, пошаговое управление и т.д.
Но когда я называю сервис с помощью ЗАВИХРЕНИЯ (т.е. из страницы PHP), точкам останова не удается функционировать. Даже если я включаю "Повреждение в первой строке" параметр отладчика, я не могу заставить выполнение останавливаться при использовании ЗАВИХРЕНИЯ.
Действительно ли это - поведение отладчика? Я должен добавить hearder к своим ВИХРЕВЫМ вызовам? Изменить URL? Или действительно ли это - ограничение XDebug?
Спасибо за внимание и усилие, Guy
Я пока не могу комментировать, поэтому я публикую это как ответ.
Можете ли вы отлаживать более одного запроса AJAX в одном сеансе? Ваш сеанс отладки все еще работает в Eclipse, когда вы пытались отладить с помощью curl?
Описание о том, как он работает для меня:
PHP
И ничего еще. Он останавливается на первой строке, вы «продолжаете», и он заканчивает исполнение. Надеюсь, что помогает.
Когда вы отладки запроса AJAX, что один отправляется браузером, в одном и том же контексте навигации, как другой (без ajax) . Почему это работает нормально.
Запрос, отправленный Curl, находится в другом, другим, контексте - и я не уверен, что вы можете зацепить отладчик в это ... Но, может быть, ...
Прежде всего, вот Информация, которая может оказаться полезной, цитируя документацию Xdebug :
XDEBUG содержит функциональные возможности для сохранения Отслеживание сеанса отладки при запуске Через браузер: cookies. Это работает Как это:
- Когда вариация URL
xdebug_session_start = name
добавлено к URL xdebug излучает печенье с именем "xdebug_session
" и как значение Значениеxdebug_session_start
Параметр URL.- Когда есть вариабельность GET (или POST)
xdebug_session_start
илиxdebug_session
cookie установлен, xdebug Постараюсь подключиться к отсчету.- Чтобы остановить сеанс отладки (и уничтожить печенье) Просто добавьте URL Параметр
xdebug_session_stop
. Xdebug, тогда больше не пытается сделать связь с отсчитывающим.
Может быть, это может работать, если вы установите это cookie "вручную", отправляя его allong запрос скручиваемости ...
Я предполагаю, что вы сначала должны получить его значение, как установлено значение Xdebug в начале Необходимо возможно сеанс отладки - повторное использование файла cookie в вашем браузере, должно быть возможно.
Примечание: я никогда не пробовал это - если вы попробуете, и это работает, не могли бы вы подтвердить это сработало?
Я столкнулся с той же проблемой. Я решил эту проблему, отключив функцию автоматического запуска в php.ini:
xdebug.remote_autostart = 0
, а затем добавив ключ API к URL-адресу веб-службы, который вызывает мой клиент веб-службы:
?XDEBUG_SESSION_START=<your API key here>
, и я не уверен если это важно, но я ввел ключ API в свой отладчик (MacGDBp). Теперь отладчик запускается только при вызове серверного скрипта webervice, а не при запуске клиента.
Надеюсь, это поможет.