Xdebug распадается на доступ к статическому свойству класса

У меня проблема с Xdebug в моей среде разработки.

FROM library/php:5.5-apache

RUN apt-get -qqy update && apt-get -qqy install \ 
               libpq-dev \
               libmcrypt-dev \
               libxml2-dev \
               ssl-cert \
               vim \
               git \
               mc \
        && rm -r /var/lib/apt/lists/*

# compile and add xdebug
RUN pecl install xdebug \
    && echo "zend_extension=xdebug.so" >> "/usr/local/etc/php/conf.d/xdebug.ini"

# configure apache and vhosts
RUN a2enmod rewrite ssl \
        && a2ensite 000-default default-ssl

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_PID_FILE /var/run/apache2/apache2.pid
ENV APACHE_LOCK_DIR /var/lock/apache2

CMD ["apache2-foreground"]

Настройки Xdebug:

[xdebug]
xdebug.remote_enable=1
xdebug.remote_autostart=0
xdebug.remote_host=172.17.42.1
xdebug.remote_port=9000

Все работает хорошо, но одно. При отладке кода:

<?php
class A {
    static private $a;

    static public function init() {
        self::$a = 123;
    }
}

A::init();

Если я устанавливаю точку останова на self::$a = 123; или вхожу в строку, я получаю:

Fatal error: Access to undeclared static property: A::$a

Если я не вхожу в эту строку, сеанс отладки продолжается без проблем.

Что не так?

Ответы

Ответ 1

Я думаю, что это ошибка где-то в XDebug - см. эти отчеты об ошибках

Тем временем вы сможете сортировать работу по проблеме, используя функцию xdebug_break() только ПОСЛЕ линии, которая бросает исключение и продолжает отлаживать оттуда. Я попытался установить точку останова на линии после исключения, и я обнаружил, что контрольной точки недостаточно, чтобы остановить ее исключение.

Не идеальное решение, но, надеюсь, скоро эти ошибки будут исправлены.

Ответ 2

Описанная ошибка может быть воспроизведена только на официальных изображениях PHP5. Образы PHP 7 работают очень хорошо, и при создании пользовательского изображения PHPP FPM из jessie или ubuntu ошибка также не возникает.