Конфигурация Xdebug с PHP fastcgi и eclipse?
-
18-09-2019 - |
Вопрос
Я без проблем использую eclipse-pdt в сочетании с xdebug и apache уже более года.Все работало безупречно, и я мог выполнять всю необходимую интерактивную отладку изнутри eclipse (используя свою машину в качестве сервера).
Теперь я перешел с apache на nginx (и поэтому PHP теперь работает не как сервис Apache, а как fast-cgi) и я не могу найти способ настроить eclipse для корректной работы с xdebug.Я не уверен, связана ли проблема с xdebug или с eclipse (или с обоими).
В конфигурации eclipse я уже изменил ссылку на файл конфигурации PHP на /etc/php5/cli/php.ini
.
Попытки с php.ini версии 1
Со следующими php.ini
файл
zend_extension=/usr/lib/php5/20060613/xdebug.so
- Я вижу, что xdebug работает (например, если я выполняю
var_dump()
Я получаю версию xdebug, а не простую версию PHP) - Я не могу использовать интерактивную отладку из eclipse:браузер открывается и полностью загружает страницу с типичным URL-адресом, содержащим
...?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=...
, но выполнение программы не останавливается на точках останова - В правом нижнем углу затмения я вижу подозрительное сообщение: "Запуск =put_the_name_of_my_project_here=:57%" который чередуется с «освежающее рабочее место» один.
Попытки с php.ini версии 2
Если я использую другую версию файла (так она и работала, пока я не переключился на nginx):
zend_extension=/usr/lib/php5/20060613/xdebug.so
xdebug.remote_enable=On
xdebug.remote_autostart=On
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_mode=req
Я вообще не могу получить доступ ни к одной странице моего сайта.
ПС:Дополнительные данные о моей машине:- ОПЕРАЦИОННЫЕ СИСТЕМЫ: GNU/Linux — Ubuntu 9.10 64 бит.- PHP: 5.2.10-2ubuntu6.3 с Suhosin-Patch 0.9.7;Zend Engine v2.2.0, Copyright (C) 1998-2009 Zend Technologies с XDebug v2.0.4 - Затмение: см. скриншот.
Решение
То, что сказал Бо, верно (не мог голосовать, так как я новичок!).
Обычно добавляем в /etc/php5/cgi/php.ini (или находим php.ini) такие строки, как
zend_extension = /PATH_TO/xdebug.so ## <-- NOTE the absolute path, not relational (For ex on Windows: "C:\nginx-1.9.13\php\ext\php_xdebug-2.6.0RC2-7.0-vc14-nts.dll")
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_port = 9900 ## <-- Yours will be probly 9000 or other..
делает свою работу.
Итак, после изменения
./php-fastcgi stop
./php-fastcgi start
Это сработало для меня.
Другие советы
xdebug и FastCGI используют один и тот же порт по умолчанию (9000).Измените порт XDebug в файле php.ini следующим образом:
xdebug.remote_port=9001
и обновите настройки IDE, чтобы использовать 9001.
Попробуйте перезапустить ваш php.Поскольку у вас установлен php-fastcgi, перезапуск nginx, похоже, не поможет.Когда я перезагрузил весь сервер, изменения вступили в силу.
У меня была та же проблема, и я ее решил.
В файле /etc/php5/apache2/php.ini
добавлять:
[xdebug] xdebug.remote_enable=On
xdebug.remote_autostart=off
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_mode=req
В файле /etc/php5/cli/php.ini
добавлять:
zend_extension=/usr/lib/php5/20060613/xdebug.so
xdebug.remote_enable=On
xdebug.remote_autostart=off
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_mode=req
Перезапустите Апач:
sudo service apache2 restart
Проблема в решении: "xdebug.remote_autostart = вкл.".Если вы установили в файле config "xdebug.remote_autostart = вкл.".Это заставит Xdebug запускать сеанс отладки для каждого запроса, выполняемого на этом сервере, без необходимости указывать в запросе необходимость сеанса отладки.
Вам нужны перемены
"xdebug.remote_autostart = выключено"
И перезапустите веб-сервис.В этом примере — Apache.
Вы можете прочитать больше здесь: http://doc.waterproof.fr/phpedit/debugging_profiling/configuration/debugger_with_xdebug
Удачи!