Я использовал PDT затмения в сочетании с xdebug и апачем без проблем, больше одного года. Вещи работали безупречно, и я мог сделать всю интерактивную отладку, которую я хотел из затмения (использующий мою собственную машину в качестве сервера).
Теперь я переключился от апача на nginx (и поэтому выполнения PHP теперь не как сервис Apache, но как быстро-cgi), и я не могу найти способ настроить затмение для работы приятно с xdebug. Я ни один уверен, ли проблема с xdebug или с затмением (или оба), чтобы быть уверенной.
В конфигурации затмения я уже изменил ссылку на конфигурационный файл PHP к /etc/php5/cli/php.ini
.
Со следующим php.ini
файл
zend_extension=/usr/lib/php5/20060613/xdebug.so
var_dump()
Я получаю xdebug версию его, не простой PHP один),...?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=...
, но выполнение программы не останавливается в точках остановаЕсли я использую эту другую версию файла (который является тем, что это работало, пока я не переключился на 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
Я не могу получить доступ ни к какой странице своих сайтов вообще.
PS: Дополнительные данные по моей машине: - ОС: GNU/Linux - Ubuntu 9.10 64 бита. - PHP: 5.2.10-2ubuntu6.3 с Suhosin-патчем 0.9.7; Механизм Zend v2.2.0, Copyright (c) 1998-2009 Zend Technologies с Xdebug v2.0.4 - Eclipse: см. снимок экрана.
То, что сказал Бо, правильно (не могу голосовать, так как я новенький!).
Как правило, добавление в /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
Это сработало для меня.
У меня была та же проблема, и я решил ее.
В файле /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
Перезапустите Apache:
sudo service apache2 restart
Проблема в решении "xdebug.remote_autostart = on". Если в файле конфигурации установлено "xdebug.remote_autostart = on". Это заставит Xdebug запускать сессию отладки для каждого запроса, который делается на этом сервере, без необходимости указывать в запросе, что сессия отладки нужна.
Вам нужно изменить
"xdebug.remote_autostart = off"
И перезапустить веб-сервис. В этом примере это Apache.
Вы можете прочитать больше здесь: http://doc.waterproof.fr/phpedit/debugging_profiling/configuration/debugger_with_xdebug
Удачи!
Попробуйте перезапустить свой php. Поскольку у вас есть php-fastcgi, перезапуск nginx, похоже, этого не делает. Когда я перезагрузил весь свой сервер, изменение вступило в силу.