Развернул сайт на Docker, но не могу сконнектить IDE VSCode c моим PHP сервером. Посмотрел кучу мануалов, но даже не знаю где посмотреть ошибки от этого соединения. Debug Colsole пустая
В phpinfo(видно, что Xdebug включен, видны его параметры, 9000 порт и тд)
В моем Dockerfile:
pecl install xdebug
RUN echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=true" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=true" >> /usr/local/etc/php/conf.d/xdebug.ini
VS CODE
{
// Используйте IntelliSense, чтобы узнать о возможных атрибутах.
// Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов.
// Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"hostname": "::"
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
}
Вы имели в виду Xdebug, очевидно, когда писали про PHPDebug. Из заголовка это не очень понятно, можно подумать что речь идет о Phpdbg
Дальше нужно отметить что очень грубо говоря - xdebug шлет на удаленную машину некую информацию по некому протоколу. Удаленная машина в нашем случаея является как раз ваша IDE, а значит наша задача сделать так, чтобы с хоста где крутится у вас PHP на хост с вашей IDE попала нужная информация на определенный порт.
Еще чуть чуть дальше -
В xdebug есть настройки, в частности вот xdebug.remote_host . В силу того что по-умолчанию все идет на порт 9000 , то мы настройки порта не трогаем без необходимости, а вот значение remote_host по-умолчанию это localhost, обратите на это внимание.
Ну и теперь давайте соберем все воедино.
Когда вы запускаете Docker то с точки зрения докер контейнера localhost это сам контейнер, т.е. xdebug в этом случае пытается отправить данные самому контейнеру (localhost:9000) что в нашем случае не верно.
Почему не верно, спросите Вы, а потом что когда вы запускаете контейнер, то хост, на котором запущен сам Docker и соответственно все запущеные контейнеры (а так же на нем находится ваша IDE) с точки зрения контейнеров по-умолчанию будет скорее всего иметь адрес 172.17.0.1 . Этот адрес вам и нужно прописать в remote_host настроек Xdebug (ну или тот адрес который конкретно у вас ).
Так же меня немного смущает настройка в вашем IDE "hostname": "::" не ограничивает ли она ваш хост только ipv6 адресами, но скорее всего нет, однако если не заработает то нужно будет и сюда внимание обратить.
Ну в общем в сухом остатке - добавьте/замените xdebug.remote_host=172.17.0.1
p.s. так же есть настройки xdebug.idekey обратите на нее тоже внимание.
updt. А вот тут собственно уже это обсуждалось.
Продвижение своими сайтами как стратегия роста и независимости