PHP xdebug загружен, но никогда не подключается и никогда ничего не регистрирует - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь заставить xdebug общаться с PHPStorm из контейнера docker.

Мой файл .ini в настоящее время выглядит так, но поверьте мне: я экспериментировал со многими комбинациями этих настройки сегодня утром:

zend_extension=xdebug.so
xdebug.remote.enable=1
xdebug.remote_autostart=1
xdebug.remote_host=10.0.14.79
xdebug.remote_port=2050
xdebug.idekey=mediabank
xdebug.scream=1
xdebug.auto_trace=1
xdebug.trace_output_dir=/tmp/
xdebug.remote_log=/tmp/xdebug.log

Каждая из этих настроек, я могу подтвердить, что они установлены, с вариациями php -i |grep <NAME_SETTING_HERE> или phpinfo();. И все же, когда я пытаюсь запустить скрипт PHP, PHPStorm сидит там, как будто ничего не произошло, и мой xdebug.log остается совершенно пустым. Ничего! Просто чтобы быть уверенным, я пытался:

echo '' >/tmp/xdebug.log
chmod 777 /tmp/xdebug.log

Без изменений.

Я пробежал все, что я могу найти здесь: https://www.jetbrains.com/help/phpstorm/troubleshooting-php-debugging.html#

И, в крайнем случае, перезагрузка моей хост-машины. Нет прогресса.

У кого-нибудь есть еще предложения для меня? Или меня ждет болезненный ад var_dump();?

РЕДАКТИРОВАТЬ: по запросу добавлен образец файла cli.

<?php

echo ("Running\n");
xdebug_break();
echo ("Still running\n");
die("I'm done\n");

Ответы [ 4 ]

4 голосов
/ 29 января 2020

Вы фактически не включили Xdebug:

xdebug.remote.enable=1

Не должно быть . между remote и enable, вместо этого должно быть _.

0 голосов
/ 29 января 2020

Вы должны установить XDEBUG_SESSION cook ie, прежде чем сервер XDebug запустит сеанс отладки PHPStorm.

См. Здесь для создания закладок:
https://www.jetbrains.com/phpstorm/marklets/

Или используйте добавочный номер:

0 голосов
/ 29 января 2020

Вот как я настроил свой xdebug.ini (переменные внедряются из файла окружения при запуске docker-compose up -d)

[xdebug]
xdebug.remote_enable=${PHP_XDEBUG_REMOTE_ENABLE}
xdebug.remote_handler=${PHP_XDEBUG_REMOTE_HANDLER}
xdebug.remote_port=${PHP_XDEBUG_REMOTE_PORT}
xdebug.remote_autostart=${PHP_XDEBUG_REMOTE_AUTOSTART}
xdebug.remote_connect_back=${PHP_XDEBUG_REMOTE_CONNECT_BACK}
xdebug.idekey=${PHP_XDEBUG_IDEKEY}
xdebug.remote_host=${PHP_XDEBUG_REMOTE_HOST}
0 голосов
/ 29 января 2020

Надеюсь, это вам поможет:

docker -compose.yml

wordpress:
        build: docker/php-fpm
        volumes:
            - .:${PROJECT_FILES}
            - ${DOCKER_DIR}data/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
            - ${DOCKER_DIR}data/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
        depends_on:
            - db
        environment:
            WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
            WORDPRESS_DB_HOST: db:3306
            WORDPRESS_DB_USER: ${MYSQL_USER}
            WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
        ports:
            - 9000:9000

в xdebug.ini

[xdebug]
error_reporting = E_ALL
display_startup_errors = On
display_errors = On
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9001

Проверено, работает.

...