Как я могу отследить, отправляется ли запрос Xdebug из моего контейнера браузера / докера? - PullRequest
0 голосов
/ 14 октября 2019

У меня установлена ​​среда разработки PhpStorm с Xdebug, контейнер докера, который настроен с включенным Xdebug и примененным модулем браузера. Однако, когда я пытаюсь «поднять трубку» и обновить код, содержащийся в среде, ничего не получается.

Я пробовал различные порты и имена серверов, а также учебные пособия, которые ямогу найти. Я не уверен, является ли это безопасностью или неправильной настройкой моего докера, но я относительно уверен, что настройка PhpStorm правильная.

Я пытался выставить порты в Dockerfile (9000 & 9001)

Мой .php-файл - это просто echo и некоторая математика с применением точек останова:

echo("TEST 1<br>");
$test = 2;
echo("TEST " . $test . "<br>");

$testArray = xdebug_get_code_coverage();
var_dump($testArray);
phpinfo();

dd("TEST 3");

В моем файле .env определено следующее:

PHP_IDE_CONFIG=serverName=jumbledowns-demo
XDEBUG_CONFIG=remote_host=localhost remote_port=9001

И мой Dockerfile настроенТаким образом, Xdebug:

RUN pecl install xdebug; \
    docker-php-ext-enable xdebug; \
    echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
    echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;

PHPinfo на стороне браузера показывает ожидаемый код и следующие настройки для Xdebug:

xdebug.remote_host  localhost   localhost
xdebug.remote_log   no value    no value
xdebug.remote_mode  req req
xdebug.remote_port  9001    9000

Я пытался использовать URL-адреса и назначенные IP-адреса ввыше и может изменить их при необходимости.

В идеале я хотел бы иметь возможность иметь журнал командной строки или выходные данные, которые показывают, что Xdebug пытается вызвать и на какой порт.

1 Ответ

0 голосов
/ 15 октября 2019

Чтобы узнать, что пытается сделать Xdebug, вам нужно установить для параметра xdebug.remote_log что-то непустое, например, xdebug.remote_log=/tmp/xdebug.log. Этот файл будет включать в себя все попытки соединения и содержимое протокола связи, если соединение установлено.

remote_host = localhost

Почти наверняка не правильно, как PHP и Xdebugпри запуске в вашем док-контейнере необходимо открыть соединение с этим хостом, и localhost не будет правильным именем хоста / IP-адресом. Скорее всего, это host.docker.internal или что-то в этом роде, или, скорее, жесткий код IP-адреса компьютера, на котором работает ваша IDE, который доступен из вашего док-контейнера.

...