Инструменты на стороне клиента: (Нет 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.
В моем выводе phpinfo () нет раздела Zend, хотя есть и такие переменные
report_zend_debug = on
zend.detect_unicode On
zend.enable_gc On
zend.multibyte Off
zend.script_encoding = no value
Из вашего описания кажется, что:
Я предполагаю, что сопоставление файлов между локальным и серверным кодом не работает, точнее, eclipse не может сопоставить ваши файлы с серверными.
Чтобы решить эту проблему, вы должны установить отображение пути установка внутри вашего проекта затмения настройки запуска / отладки.
Идти к:
Если вы выполните следующие шаги, я думаю, что это должно работать
Последняя версия 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 и удаленных путях, и теперь оно должно работать
Я занимаюсь удаленной разработкой PHP с Eclipse и «Синхронизированным PHP-проектом». На моем компьютере ничего не работает, кроме Eclipse.
Это твоя проблема. Вы должны разрешить подключение xDebug. xDebug (PHP Web Server) пытается подключиться, но, вероятно, понятия не имеет, где вы находитесь;)
Там два варианта:
Если вы не находитесь за NAT или не находитесь в той же сети, что и тестовый сервер, вам необходимо открыть порт 9000 на вашем ПК. Если вы находитесь за NAT, вам также необходимо переадресовать порт 9000 (это значение по умолчанию, может быть изменено). Следующий набор правильный "xdebug.remote_host=your_public_ip"
или же xdebug.remote_connect_back = on
, Также было бы хорошо разрешить прием удаленных сессий (JIT) с любого хоста (Preferences -> PHP -> Debug -> Debuggers -> xDebug), после этого вы сможете легко запускать отладчик через расширение браузера, такое как xDebug helper.
Настройте конфигурацию запуска отладчика (маленькая стрелка после значка «отладка») для отладки через туннель SSH. В этом случае xdebug.remote_host=127.0.0.1
будет правильно. Примечание: хост сервера ssh должен быть таким же, как домен сервера, а сервер SSH должен быть доступен на порту 22
Попробуйте отключить такие вещи, как: 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. Я могу пройти через некоторое время и увидеть значение переменных.
Это означает, что у вас уже есть соединение с сервером, проблема не там