Ответ 1
Если xdebug не останавливается в какой-либо части вашего кода, добавьте xdebug_break()
в эту часть кода.
Я потратил несколько часов на то, чтобы настроить мою среду 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 может сделать все это по своей сути. Удаление отображения заставило его работать.
У Ive была аналогичная проблема с Eclipse PDT и Xdebug. Дело в том, что Eclipse слушал через IPv6, но Xdebug пытался подключиться через IPv4:
[email protected]:~$ netstat -an | grep 9000
tcp6 0 0 :::9000 :::* LISTEN
Xdebug пока не поддерживает IPv6.
После добавления строки
-Djava.net.preferIPv4Stack=true
после строки -vmargs
в моем eclipse.ini
файле, Eclipse начал прослушивать через IPv4:
[email protected]:~$ 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 запустил сеанс отладки, даже разбив первую строку script и разрешив отступы оттуда, но он с удовольствием пропустил бы любые ручные контрольные точки, которые я установил, если бы я нажал по возобновлению. После того, как он возился с ним и прочитал кучу других ответов, я исправил его.
Я пытался настроить карту путей (в конфигурации сервера 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 script.
Контекст:
Существует ошибка в подключаемом модуле PDT версии 3.7.0, который предотвращает остановку отладчика на контрольных точках.
И это происходит, когда путь к вашему script содержит пробел!
Он был исправлен, но я предполагаю, что целевая версия, которая 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 с затмением:
скачать vmwere
downlaod и настройка vmwere: CentOS-7-x86_64-Everything-1511.iso
отключить брандмауэр
systemctl отключить firewalld
systemctl stop firewalld
systemctl status 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 restart
yum -y установить php-mysql
yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring
php-snmp php-soap curl curl-devel
служба httpd restart
yum install phpMyAdmin
в окне open 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 restart
изменить $cfg ['Servers'] [$ i] ['auth_type'] = 'cookie'; до $cfg ['Servers'] [$ i] ['auth_type'] = 'http';
служба httpd restart
/etc/selinux/config change
Этот файл управляет состоянием SELinux в системе.
SELINUX = может принимать одно из этих трех значений:
Обеспечение соблюдения - применяется политика безопасности SELinux.
permissive - SELinux печатает предупреждения вместо принудительного применения.
отключено - политика SELinux не загружена.
SELINUX = исполнение
SELINUXTYPE = может принимать одно из трех значений:
target - Целевые процессы защищены,
минимум - Модификация целевой политики. Только выбранные процессы защищенный.
mls - защита от нескольких уровней безопасности.
SELINUXTYPE = target
к
Этот файл управляет состоянием SELinux в системе.
SELINUX = может принимать одно из этих трех значений:
Обеспечение соблюдения - применяется политика безопасности SELinux.
permissive - SELinux печатает предупреждения вместо принудительного применения.
отключено - политика SELinux не загружена.
SELINUX = отключено
SELINUXTYPE = может принимать одно из трех значений:
target - Целевые процессы защищены,
минимум - Модификация целевой политики. Только выбранные процессы защищенный.
mls - защита от нескольких уровней безопасности.
SELINUXTYPE = target
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
Разрешить заказ, deny
Разрешить все
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
Запуск: 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 = О
xdebug.remote_host = 192.168.170.1
xdebug.remote_port = 9000
xdebug.remote_handler = DBGp
..... service httpd restart
запустить файл, и вы должны увидеть раздел XDebug, если это так сервер готов к работе!
Загрузить Eclipse Neon
Файл > Открыть проекты из файловой системы
Завершить (и подождать)
Настройки окнa > php > servers > new
вкладка "Сервер"
Имя сервера [что вам нравится]
Базовый URL [IP или имя вашего сервера]
Корень документа [Расположение на вашем жестком диске, где весь код, должен быть таким же, как у вас на сервере)
Вкладка "Отладчик"
Отладчик: Xdebug
порт: 9000
Вкладка "Сопоставление серверов" (нажмите "Добавить" )
Путь на сервере: [весь путь к вашему сайту] EG:/var/www/html/website
Путь в рабочей области [найти проект, который вы добавили: Открыть проекты из файловой системы]
перейти к главному окну eclipse > щелкнуть стрелку вниз рядом с значком ошибки > конфигурации отладки
вкладка "Сервер"
Файл: [это должен быть первый файл в вашем локальном проекте, который будет запускается при открытии приложения]
URL: отключить автоматическое создание: снимите флажок
Первое текстовое поле URL: [IP-адрес или имя вашего сервера, на котором работает ваш сайт]
Второе текстовое поле URL: [Если ваш сайт не находится в корневом каталоге, директория, куда он идет)
Общая вкладка
Отображение в меню "Избранное"
окно > предполагаемое > открытое представление > php
Поместите точку прерывания в файл php, который сначала попадает (нажав на вертикальную полосу прокрутки на строке кода)
Наконец, нажмите значок отладки в eclipse, и ваша точка останова должна попасть (строка кода с точкой останова на ней будет зеленой)
Откройте Centos 7 на Vemware в мире
Измените настройку сети VMeere на мост
Добавьте правило к маршрутизатору для переноса любого трафика на IP-адрес vmweare, который работает cetnos на
Добавьте входящее правило в брандмауэр widnows, позволяющий http
PS: У меня нет времени, чтобы проверить мой молот и поговорить с ним.
Если вы используете Eclipse, возможно, что отладчик , настроенный для определенного запуска (см. вкладку отладчика), является отладчиком Zend и NOT XDebug. Исправьте запуск отладки и повторите попытку. Это решило проблему для меня.
К сожалению, я не могу опубликовать снимок экрана. Однако в Eclipse вы можете перейти к: Конфигурации отладки > Веб-приложение PHP > затем выберите ваш запуск > Вкладка "Отладчик" > выберите "Отладчик сервера", выберите "XDebug" > нажмите кнопку "Применить" и повторите попытку.
У меня была такая же проблема, и одна из двух исправила ее...
Я удалил дублирующее определение zend_extension в моем PHP.ini
или, скорее всего, я только что обновил версию до последней версии xdebug: http://xdebug.org/download.php
(я запускал xdebug, который поставлялся с XAMPP v1.7.1)
ЭТО НАЧАЛОСЬ СНОВА... пробовал все разные версии dll xdebug и т.д.... оказалось, что то, что заставляло это не работать, было открыть окно Expressions... так что держите его закрытым, когда вы отлаживаете материал.. вы можете временно добавить часы, а затем закрыть окно "Выражения", прежде чем "шаг"...
bogus...
1- проверить конфигурацию xdebug на php.ini
2- eclipse- > project- > properties- > phpDebug- > Включить конкретную настройку проекта
phpDebugger- > configurattion- > порт или widndow- > preference- > PHP- > debug- > installedDebuggers
3-widndow- > preference- > PHP →
Interpreter- > версия
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 Версия: Выпуск 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/
, который используется для apache. Я изменил его, включив следующую настройку
; 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
, и теперь обнаружены точки останова, и я могу отлаживать, как ожидалось.
Я тоже исправил это. Использование zend_extension вместо расширения.
zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"