PHP Debugger не остановится на точках останова: Eclipse & amp; Xdebug


Инструменты на стороне клиента: (Нет Apache, Нет PHP)


Eclipse для разработчиков PHP

Версия: Oxygen.2 Release (4.7.2)

Идентификатор сборки: 20171218-0600

Redhat Enterprise Linux 6.9

Java-версия «1.8.0_101»

Java (TM) SE Runtime Environment (сборка 1.8.0_101-b13)

Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 25.101-b13, смешанный режим)


Удаленный сервер, где находится веб-приложение PHP:


PHP 5.6.5

Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies

с Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, Zend Technologies

с Xdebug v2.2.7, Copyright (c) 2002-2015, Дерик Ретанс


Я нашел предыдущие сообщения на эту тему. Я не понял всех вещей, чтобы попробовать. Я попробовал то, что мог понять, но безуспешно. В основном просто с помощью xdebug_break (); (опять не повезло)


Я использую Eclipse и Xdebug для отладки удаленного веб-сайта PHP. Моя проблема в том, что я не могу заставить отладчик остановиться на установленных точках останова.

Я занимаюсь удаленной разработкой PHP с Eclipse и «Синхронизированным PHP-проектом». На моем компьютере ничего не работает, кроме Eclipse.

Я использую отладчик Xdebug на удаленном сервере через Eclipse.

Когда я использую отладчик, он идет в index.php. Я могу пройти через некоторое время и увидеть значение переменных.

Проблема в том, что Xdebug не остановится ни на одной из установленных точек останова.

Я включаю мои настройки Xdebug

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

Настройки Xdebug:

xdebug support,enabled
Version,2.2.7

DBGp - Common DeBuGger Protocol,$Revision: 1.145 $

Directive,Local Value,Master Value

xdebug.auto_trace,Off,Off
xdebug.cli_color,0,0
xdebug.collect_assignments,Off,Off

xdebug.collect_includes,On,On

xdebug.collect_params,0,0
xdebug.collect_return,Off,Off
xdebug.collect_vars,Off,Off

xdebug.coverage_enable,On,On
xdebug.default_enable,On,On

xdebug.dump.COOKIE,no value,no value
xdebug.dump.ENV,no value,no value
xdebug.dump.FILES,no value,no value
xdebug.dump.GET,no value,no value
xdebug.dump.POST,no value,no value
xdebug.dump.REQUEST,no value,no value
xdebug.dump.SERVER,no value,no value
xdebug.dump.SESSION,no value,no value

xdebug.dump_globals,On,On
xdebug.dump_once,On,On

xdebug.dump_undefined,Off,Off

xdebug.extended_info,On,On

xdebug.file_link_format,no value,no value

xdebug.max_nesting_level,100,100
xdebug.overload_var_dump,On,On

xdebug.profiler_aggregate,Off,Off
xdebug.profiler_append,Off,Off
xdebug.profiler_enable,Off,Off

xdebug.profiler_enable_trigger,On,On
xdebug.profiler_output_dir,/tmp,/tmp
xdebug.profiler_output_name,cachegrind.out.%t.%s,cachegrind.out.%t.%s

xdebug.remote_autostart,Off,Off

xdebug.remote_connect_back,On,On
xdebug.remote_cookie_expire_time,3600,3600
xdebug.remote_enable,On,On
xdebug.remote_handler,dbgp,dbgp
xdebug.remote_host,127.0.0.1,127.0.0.1
xdebug.remote_log,/var/log/xdebug/xdebug.log,/var/log/xdebug/xdebug.log
xdebug.remote_mode,req,req
xdebug.remote_port,9000,9000

xdebug.scream,Off,Off
xdebug.show_exception_trace,Off,Off
xdebug.show_local_vars,Off,Off
xdebug.show_mem_delta,Off,Off
xdebug.trace_enable_trigger,Off,Off

xdebug.trace_format,0,0
xdebug.trace_options,0,0
xdebug.trace_output_dir,/tmp,/tmp
xdebug.trace_output_name,trace.%c,trace.%c
xdebug.var_display_max_children,128,128
xdebug.var_display_max_data,512,512
xdebug.var_display_max_depth,3,3

редактировать

Я создал альбом скриншотов.

Первое — это сообщение об ошибке от Eclipse, которое появляется, когда я оставляю его на всю ночь.

Остальные снимки экрана — это кусочки в порядке (сверху вниз) моего вывода phpinfo.

https://imgur.com/a/9DKev

В моем выводе phpinfo () нет раздела Zend, хотя есть и такие переменные

report_zend_debug = on
zend.detect_unicode On
zend.enable_gc  On
zend.multibyte  Off
zend.script_encoding = no value

9

Решение

Из вашего описания кажется, что:

  • отладочное соединение с вашим удаленным сервером работает
  • точки останова работают на index.php, но не где-либо еще

Я предполагаю, что сопоставление файлов между локальным и серверным кодом не работает, точнее, eclipse не может сопоставить ваши файлы с серверными.

Чтобы решить эту проблему, вы должны установить отображение пути установка внутри вашего проекта затмения настройки запуска / отладки.

Идти к:

  1. Проект -> Свойства из меню
  2. Выберите Run / Debug Settings
  3. Отредактируйте свой запустить настройки конфигурации
  4. На вкладке Сервер раздел PHP сервер, Выбрать конфигурировать
  5. Откроется окно «PHP Server», выберите отображение пути табуляция
  6. Задавать Путь на сервере к пути вашего проекта на сервере и установить Локальный путь ну, это само за себя.

введите описание изображения здесь

4

Другие решения

Если вы выполните следующие шаги, я думаю, что это должно работать

Последняя версия XDebug

Ваша версия XDebug с 2015 года в соответствии с этим https://xdebug.org/. Таким образом, вы должны обновить до последней версии

Настройка конфигурации XDebug

Настройте 99-xdebug.ini в вашем /usr/local/etc/php/conf.d/ или же /etc/php/conf.d или же /etc/php/5.6/cli/conf.d в зависимости от того, что существует в вашей системе

xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_handler=dbgp
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.remote_log=/tmp/xdebug.log

Создать SSH Debug Tunnel

Машина, с которой вы хотите отлаживать, вам нужно запустить SSH туннель, используя

ssh -R 127.0.0.1:9000:127.0.0.1:9000 -p 22 <user>@<phpserver>

Настройка сопоставления удаленного пути в Eclipse

Сконфигурируйте eclipse для отладки на порту 9000 и удаленных путях, и теперь оно должно работать

3

Я занимаюсь удаленной разработкой PHP с Eclipse и «Синхронизированным PHP-проектом». На моем компьютере ничего не работает, кроме Eclipse.

Это твоя проблема. Вы должны разрешить подключение xDebug. xDebug (PHP Web Server) пытается подключиться, но, вероятно, понятия не имеет, где вы находитесь;)

Там два варианта:

  1. Если вы не находитесь за NAT или не находитесь в той же сети, что и тестовый сервер, вам необходимо открыть порт 9000 на вашем ПК. Если вы находитесь за NAT, вам также необходимо переадресовать порт 9000 (это значение по умолчанию, может быть изменено). Следующий набор правильный "xdebug.remote_host=your_public_ip" или же xdebug.remote_connect_back = on, Также было бы хорошо разрешить прием удаленных сессий (JIT) с любого хоста (Preferences -> PHP -> Debug -> Debuggers -> xDebug), после этого вы сможете легко запускать отладчик через расширение браузера, такое как xDebug helper.

  2. Настройте конфигурацию запуска отладчика (маленькая стрелка после значка «отладка») для отладки через туннель SSH. В этом случае xdebug.remote_host=127.0.0.1 будет правильно. Примечание: хост сервера ssh должен быть таким же, как домен сервера, а сервер SSH должен быть доступен на порту 22

0

Попробуйте отключить такие вещи, как: opcache, zend optimizer и т. Д., Все расширения, которые работают с интерпретацией php-кода. Если вам повезет, и он начнет работать, загрузите файл xdebug.so последним, после всех остальных модулей, чтобы вы могли снова включить их. Поместите xdebug.so в папку, где находятся все остальные php .so, и загрузите его в последнюю строку php ini, выполнив полный путь к xdebug.so

Если вы просто поместите его в последнюю строку php.ini, то после этого может загрузиться какой-нибудь несовместимый модуль с конфигурацией из /etc/php/5.6/apache2/conf.d/*. Так что просто перенесите конфиги куда-нибудь на некоторое время.

По ссылке внизу поста отключаю (но не удаляйте по apt) модуль opchache полностью и поместите его в php.ini за 1 строку до отладчика.

Проверьте порядок загрузки расширений в вывод phpinfo () слева от логотипа zend, насколько я помню. Отладчик должен быть последней строкой в ​​этом блоке вывода. Опубликовать вам phpinfo (); выход.

Другой способ, что я иду своим путем: (и я рекомендую это)

Если у вас есть root-доступ к удаленному серверу, попробуйте Zend Debugger. Его в комплекте с Zend Studio (не бесплатно), но для некоторых версий php есть отдельные загрузки отладчика, 5.6 — это последняя версия, для которой он доступен. Они не публикуют его для php7, во всяком случае, я не знаю, можно ли скопировать его из пробной студии Zend. Если его удалили, не удалось загрузить, я могу отправить его вам.

Отладчик Zend теперь более родной для php, а команда Zend участвует в разработке Eclipse PDT (но они реализовали самые вкусные функции в платной версии)

У меня есть среда, аналогичная вашей, также есть проблемы с XDebug, затем решил удалить его и попробовать Zend отладчик. Есть мой вопрос и ответ на аскубунту, об его установке и устранении проблем: https://askubuntu.com/questions/1002252/installing-configuring-zend-debugger-for-eclipse-pdt

В нескольких словах решение было:

Закомментируйте это в config: (версия cli выглядит как символическая ссылка, поскольку она также отключена)

lenya@JabbaDesktop:~$ sudo nano /etc/php/5.6/apache2/conf.d/10-opcache.ini

; configuration for php opcache module
; priority=10
; zend_extension=opcache.so

Внизу /etc/php/5.6/apache2/php.ini:

[Zend]
zend_extension="/usr/lib/php/20131226/opcache.so"zend_extension="/usr/lib/php/20131226/ZendDebugger.so"zend_debugger.allow_hosts=127.0.0.0/8,192.168.0.0/16
zend_debugger.expose_remotely=1
zend_debugger.connector_port=10137

Первые две строки (.so) должны быть точно в этом порядке.
Установку отладчика «как» легко найти в гугле. Ни одна из упомянутых выше проблем.

Обновить:

Когда я использую отладчик, он идет в index.php. Я могу пройти через некоторое время и увидеть значение переменных.

Это означает, что у вас уже есть соединение с сервером, проблема не там

0
По вопросам рекламы [email protected]