Конфигурация Xdebug с PHP fastcgi и eclipse?

Я использую 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() я получаю версию var_dump() , а не простой 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 

Я не могу получить доступ к любой странице моих сайтов.


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: см. Скриншот.

alt text

Solutions Collecting From Web of "Конфигурация Xdebug с PHP fastcgi и 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

Удачи!