Я использую eclipse-pdt в сочетании с xdebug и apache без проблем уже более года. Все работает безупречно, и я мог бы выполнить всю интерактивную отладку, которую я хотел получить в eclipse (используя мою собственную машину в качестве сервера).
Теперь я переключился с apache на nginx (и поэтому PHP работает теперь не как служба Apache, а как fast-cgi), и я не могу найти способ настроить eclipse для работы с xdebug. Я не уверен, что проблема связана с xdebug или с eclipse (или обоими).
В конфигурации eclipse я уже изменил ссылку на файл конфигурации PHP на /etc/php5/cli/php.ini
.
Со следующим файлом php.ini
zend_extension=/usr/lib/php5/20060613/xdebug.so
var_dump()
я получаю версию var_dump()
, а не простой 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-Patch 0.9.7; Zend Engine 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 path 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
Перезапустить Apache:
sudo service apache2 restart
Проблема в решении – « xdebug.remote_autostart = on ». Если вы установите в файле config « xdebug.remote_autostart = on ». Это заставит Xdebug начать сеанс отладки для каждого запроса, который выполняется на этом сервере, без необходимости указывать в запросе, что требуется отладочный сеанс.
Вам нужно изменить
" xdebug.remote_autostart = off "
И перезапустите веб-службу. В этом примере Apache.
Вы можете прочитать здесь: http://doc.waterproof.fr/phpedit/debugging_profiling/configuration/debugger_with_xdebug
Удачи!