Я потратил несколько часов, чтобы настроить свою среду IDE для отладки PHP с помощью eclipse и xdebug. Все в порядке, за исключением точки останова, которую я установил на eclipse. Если я дважды нажимаю на строку, чтобы добавить точку останова, отладчик не хочет останавливаться. Если добавить строку xdebug_break (), отладчик отлично остановится на строке …
Возможно, это проблема с конфигурацией. Может ли кто-нибудь мне помочь?
php.ini
[xdebug] xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.remote_handler="dbgp" xdebug.remote_mode=req xdebug.profiler_enable = 1 xdebug.profiler_output_dir = "c:/temp" xdebug.collect_params = 4 xdebug.collect_return = on xdebug.collect_vars = on xdebug.show_local_vars = 1
Если xdebug не останавливается в какой-либо части вашего кода, добавьте xdebug_break()
в эту часть кода.
Кажется, есть несколько проблем, которые могут быть причиной этой проблемы. В моем случае это был тот факт, что я думал, что мне нужно установить какое-то отображение пути.
Настройки, найденные в
rightclick-project->properties->PHP Debug
а потом
server->edit->path mapping
были неправильными.
Я вручную добавил что-то, хотя я был прав, но Eclipse может все это сделать сам по себе. Удаление карты заставило ее работать.
У меня была аналогичная проблема с Eclipse PDT и Xdebug. Дело в том, что Eclipse слушал через IPv6, но Xdebug пытался подключиться через IPv4:
chriki@machine:~$ netstat -an | grep 9000 tcp6 0 0 :::9000 :::* LISTEN
Xdebug , похоже, не поддерживает IPv6 .
После добавления строки
-Djava.net.preferIPv4Stack=true
после строки -vmargs
в моем файле eclipse.ini
, Eclipse начал прослушивать через IPv4:
chriki@machine:~$ netstat -an | grep 9000 tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN
Отладка теперь работает безупречно.
Я решил проблему.
На моем php.ini я добавил xdebug в качестве расширения вместо zend_extension.
php.ini
zend_extension=C:\EasyPHP-5.3.3\php\ext\php_xdebug.dll
Примечание: путь должен быть полным путем вместо относительного пути.
Отладчик отлично работает. Вкусно!
У меня была та же проблема, PDT запустил сеанс отладки, даже разбив первую строку скрипта и разрешив отступы оттуда, но он с радостью пропустил бы любые ручные контрольные точки, которые я установил, если бы я нажал кнопку «Возобновить». После возиться с ним и читая кучу других ответов, я исправил это.
Я пытался настроить карту путей (в конфигурации сервера PHP), так как мои пути к проекту и пути к веб-серверу были разными, но по какой-то причине это не работало, поэтому я закончил добавление псевдонима в конфигурацию apache для соответствия местоположению PDT просил. Однако я не удалил эту настройку карты маршрута. Когда я удалил карту пути, точки останова начали работать!
Вероятно, симптом чего-то еще не работает (настройка карты пути), но точки останова и отладки все работают на меня сейчас 🙂
У меня такая же проблема. Решение состоит в том, чтобы открыть правильный файл и добавить в него контрольную точку.
Мой локальный сервер находится на моем виртуальном диске Z: (я использую denwer вместо WAMP). Z указывает на мою папку D: / webserver. Поэтому я могу открыть файл как 1) Z: /myproject/script.php и как 2) D: /webserver/myproject/script.php
По некоторым причинам отладчик останавливается на контрольных точках только в открытом файле Z: /myproject/script.php .
Как проверить мое решение ??? Сделайте следующее:
xdebug_break()
в любую строку и сохраните файл В моем случае после того, как процесс отладки запущен, моя IDE phpDesigner открыла правильный файл в среде IDE и остановилась на строке xdebug_break (). Таким образом, в этом новом открытом файле вы можете добавить контрольные точки, и они будут работать. Используйте открытый файл для отладки.
Эта проблема появилась для меня после перемещения некоторых моих локальных папок проекта. Я мог бы заставить xdebugger сломаться в начале файла, но он пропустит остальные мои точки останова.
Если вы используете Netbeans, убедитесь, что ваш Project Url (Project Properties -> Run Configuration) указывает на правильное местоположение. Когда URL-адрес проекта указывает на правильную папку, точки останова начинают работать как ожидалось.
У меня была та же проблема в течение нескольких дней (!), Так как я понял, что проблема была самой тривиальной.
Конфигурация:
/etc/php5/apache2/php.ini
[XDebug] zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so" xdebug.remote_enable=true xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.remote_handler=dbgp xdebug.profiler_output_dir=/tmp
Отладчик не остановился на контрольных точках и ни на xdebug_break();
… это было связано с установленными по умолчанию папками Apache DocumentRoot /var/www
Я изменил его на /home/user/Documents/www
.
Быстрый ответ: удалите все пробелы на пути к вашему скрипту php.
Контекст:
Существует ошибка в плагине PDT версии 3.7.0, которая предотвращает остановку отладчика на контрольных точках.
И это происходит, когда путь к вашему скрипту содержит пробел!
Он исправлен, но я предполагаю, что целевая версия 4.0.0 еще не выпущена.
Комментарий, который сохранил мой день, – https://bugs.eclipse.org/bugs/show_bug.cgi?id=489646#c7 («Комментарий 7»).
Это раздражало меня около 3 часов, только что сработало. Поэтому, прежде чем положить оружие в голову, попробуйте это. Когда Eclipse запускается, выберите новое рабочее пространство и снова настройте свой проект!
После того, как я сделал это, мои брейк-очки снова попали! Мои точки разрыва работали нормально, а затем внезапно перестали работать. Я пытался:
удаление всех точек останова
проект очистки
повторная установка eclipse
Ничего из вышеперечисленного не работало для меня!
BTW Я использую окно 7.
Надеюсь, эта информация спасет чью-то жизнь!
BTW: вот шаги, которые вы предпринимаете для настройки, centos 7 с xdebug и vmwere, с клиентом окна 7 с eclipse:
скачать vmwere
downlaod и настройка vmwere: CentOS-7-x86_64-Everything-1511.iso
отключить брандмауэр
systemctl отключить firewalld
systemctl stop firewalld
Статус systemctl firewalld
подключиться через ftp
ifconfig, чтобы узнать Ip
Ifconfig
eno16777736: flags = 4163 mtu 1500
inet 192.168.170.128 netmask 255.255.255.0 broadcast 192.168.170.255
inet6 fe80 :: 20c: 29ff: fec4: b8ca prefixlen 64 scopeid 0x20
эфир 00: 0c: 29: c4: b8: ca txqueuelen 1000 (Ethernet)
RX-пакеты 254 байта 20919 (20,4 KiB)
Ошибки RX 0 опустились 0 перерасходов 0 кадр 0
TX-пакеты 95 байтов 10225 (9,9 KiB)
Ошибки TX 0 опустились 0 перерасходов 0 несущих 0 столкновений 0
192.168.170.128 – это ip
rpm –import / etc / pki / rpm-gpg / RPM-GPG-KEY *
yum -y install epel-release
yum -y установить mariadb-server mariadb
systemctl start mariadb.service
systemctl включить mariadb.service
mysql_secure_installation
yum -y установить httpd
systemctl запустить httpd.service
systemctl включить httpd.service
yum -y install php
перезагрузка службы httpd
yum -y install php-mysql
yum -y установить php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring
php-snmp php-soap curl curl-devel
перезагрузка службы httpd
yum install phpMyAdmin
на окнах открыть cmd, введите ipconfig
найти
Ethernet-адаптер Сетевой адаптер VMware VMnet8:
Connection-specific DNS Suffix . : localdomain Link-local IPv6 Address . . . . . : fe80::94b8:9e5c:c772:3d47%19 IPv4 Address. . . . . . . . . . . : 192.168.170.1 [ this is the widnows ip to allow ] Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway .
в /etc/httpd/conf.d/phpMyAdmin.conf:
AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip 127.0.0.1 Require ip ::1 </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule>
чтобы:
AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip 127.0.0.1 Require ip ::1 </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip [ WINDOWS IP TO ALLOW GOES HERE ] Require ip ::1 </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from [ WINDOWS IP TO ALLOW GOES HERE ] Allow from ::1 </IfModule>
перезагрузка службы httpd
change $ cfg ['Servers'] [$ i] ['auth_type'] = 'cookie'; to $ cfg ['Servers'] [$ i] ['auth_type'] = 'http';
перезагрузка службы httpd
/ etc / selinux / config change
Этот файл управляет состоянием SELinux в системе.
SELINUX = может принимать одно из этих трех значений:
принудительное исполнение – применяется политика безопасности SELinux.
permissive – SELinux печатает предупреждения вместо принудительного.
отключено – политика SELinux не загружена.
SELINUX = принуждени
SELINUXTYPE = может принимать одно из трех значений:
target – Целевые процессы защищены,
минимум – Модификация целевой политики. Защищены только выбранные процессы.
mls – Многоуровневая защита.
SELINUXTYPE = целевой
в
Этот файл управляет состоянием SELinux в системе.
SELINUX = может принимать одно из этих трех значений:
принудительное исполнение – применяется политика безопасности SELinux.
permissive – SELinux печатает предупреждения вместо принудительного.
отключено – политика SELinux не загружена.
SELINUX = отключено
SELINUXTYPE = может принимать одно из трех значений:
target – Целевые процессы защищены,
минимум – Модификация целевой политики. Защищены только выбранные процессы.
mls – Многоуровневая защита.
SELINUXTYPE = целевой
reboot centos
В WINDOWS POINT BROWSER TO: http://192.168.170.128/phpmyadmin , должно быть все хорошо
копировать веб-сайт в: / var / www / html / [ИМЯ ВЕБ-САЙТА]
chmod -R 777 html
в etc / httpd / add (это позволяет permalinks работать с именем сообщения)
Опции FollowSymLinks
AllowOverride All
Разрешить заказ, отрицать
Разрешить от всех
yum install php-devel (чтобы разрешить pipsize)
создайте файл php с помощью: и скопируйте его на веб-сайт root и скопируйте htl в https://xdebug.org/wizard.php, затем нажмите кнопку источника анализа
https://xdebug.org/wizard.php предоставит следующие инструкции: (следовать им)
…… Скачать xdebug-2.4.1.tgz
Распакуйте загруженный файл tar -xvzf xdebug-2.4.1.tgz
Выполнить: cd xdebug-2.4.1
Run: phpize (см. Часто задаваемые вопросы, если у вас нет phpize.
Выполнить: ./configure
Выполнить: make
Выполнить: cp modules / xdebug.so / usr / lib64 / php / modules
Измените /etc/php.ini и добавьте строки
zend_extension = /usr/lib64/php/modules/xdebug.so
xdebug.remote_enable = On
xdebug.remote_host = 192.168.170.1
xdebug.remote_port = 9000
xdebug.remote_handler = DBGp
….. сервис httpd restart
и вы должны увидеть раздел XDebug, если так сервер готов к работе!
Загрузить Eclipse Neon
Файл> Открыть проекты из файловой системы
Закончить (и подождать)
Настройки окна> php> servers> new
Вкладка сервера
Имя сервера [что вам нравится]
Базовый URL [IP или имя вашего сервера]
Корень документа [Расположение на вашем жестком диске, где весь код, должен быть таким же, как и у вас на сервере]
Вкладка «Отладчик»
Отладчик: Xdebug
порт: 9000
Вкладка «Сопоставление карт» (нажмите «Добавить»)
Путь на сервере: [весь путь к вашему сайту] EG: / var / www / html / website
Путь в рабочей области [найти проект, который вы добавили: Открыть проекты из файловой системы]
перейти к главному окну eclipse> щелкнуть стрелку вниз рядом с значком ошибки> настройки отладки
Вкладка сервера
Файл: [это должен быть первый файл в вашем локальном проекте, который будет запущен при открытии приложения]
URL: отключить автоматическое создание: снимите флажок
Первое текстовое поле URL: [IP-адрес или имя вашего сервера, на котором запущен ваш веб-сайт]
Второе текстовое поле URL: [Если ваш сайт не находится в корневой директории, то там, где он находится)
Общая вкладка
Отображение в меню «Избранное»
window> prespective> open prespective> php
Поместите точку прерывания в файл php, который сначала попадает (нажав на вертикальную полосу прокрутки на строке кода)
Наконец, нажмите значок отладки в eclipse, и ваша точка останова должна быть удалена (строка кода с точкой останова на ней будет зеленой)
Откройте Centos 7 на Vemware для мира
Изменение настройки сети VMeere на мост
Добавьте правило к маршрутизатору для переноса любого трафика на IP-адрес vmweare, который работает cetnos
Добавьте входящее правило в брандмауэр widnows, позволяющий http
PS: У меня нет времени, чтобы проверить мой молот и поговорить, справиться с этим
Если вы используете Eclipse, может быть, что отладчик, настроенный для определенного запуска (см. Вкладку Debugger), является Zend Debugger и NOT XDebug. Исправьте запуск отладки и повторите попытку. Это решило проблему для меня.
К сожалению, я не могу опубликовать снимок экрана. Однако в Eclipse вы можете перейти к: Конфигурация отладки> Веб-приложение PHP>, затем выберите ваш запуск> Вкладка «Отладчик»> выберите «Отладчик сервера», выберите «XDebug»> нажмите кнопку «Применить» и повторите попытку.
У меня была такая же проблема, и одна из двух исправила ее …
Я удалил дублирующее определение zend_extension в моем PHP.ini
или, скорее всего, я просто обновился до последней версии xdebug отсюда: http://xdebug.org/download.php
(Я запускал xdebug, который поставлялся с XAMPP v1.7.1)
ЭТО НАЧАЛОСЬ СНОВА … пробовал все разные версии dll xdebug и т. Д. … оказалось, что то, что заставило это не работать, было открыть окно Expressions … так что держите его закрытым, когда вы отлаживаете материал … вы можете временно добавьте часы, а затем закройте окно «Выражения», прежде чем «шаг» …
поддельный …
1- проверить конфигурацию xdebug на php.ini
2- eclipse-> project-> properties-> phpDebug-> Включить конкретную настройку проекта
phpDebugger-> configurattion-> port или widndow-> preference-> php-> debug-> installedDebuggers
3-widndow-> preference-> PHP->
Interpreter-> version executables-> путь к php-win.exe
point: для каждой debug lib (xdebug, zend_debugger, …) у вас может быть исполняемый файл php по умолчанию.
4 – ваш сервер приложений работает на разных портах с 80. widndow-> preference-> php-> PHP-серверы
Просто упомянуть простое решение для меня, когда мой недавно установленный и настроенный xdebug не работал с PhpStorm: я просто забыл перезапустить apache после обновления файла php.ini.
Я добавлю ту же проблему к выпуску Fedora 20 Heisenbug, php-ZendFramework2-Debug-2.3.9-1.fc20.noarch, php-pecl-xdebug-2.2.7-1.fc20.i686 и eclipse Version: Mars.1 Выпуск (4.5.1). Я использовал предыдущие ответы, обнаружил, что eclipse использует ipv6, я изменил, как описано в eclipse.ini для -Djava.net.preferIPv4Stack=true
. То же самое для xdebug.ini и до сих пор не работает, пока я не обнаружил, что у меня есть 2 файла xdebug.ini, один в /etc/php-zts.d/
который является неправильным, и один в /etc/php.d/
который используется апачем. Я изменил его, включив следующую настройку
; Enable xdebug extension module zend_extension=xdebug.so xdebug.remote_enable=on xdebug.remote_host="127.0.0.1" xdebug.remote_port=9000 xdebug.remote_handler="dbgp" xdebug.remote_mode=req xdebug.remote_autostart=1 xdebug.idekey=
перезапустили перезагрузку сетевой сети sudo service network restart
и теперь обнаружены точки останова, и я могу отлаживать, как ожидалось.