2015-09-14 21 views
14

Ho un problema con Xdebug nel mio ambiente di sviluppo.interruzioni di Xdebug sull'accesso alla proprietà statica della classe

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"] 

impostazioni Xdebug:

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

Tutto funziona bene ma una cosa. Quando il debug del codice:

<?php 
class A { 
    static private $a; 

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

A::init(); 

Se ho impostato un punto di interruzione self::$a = 123; o passo nella linea, ottengo:

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

Se io non entro in quella linea, la sessione di debug continua senza alcun problema.

Cosa c'è che non va?

+0

Stesso problema con PHP 5.4.43 con Xdebug v2.3.2. Creazione propria tramite finestra mobile. – shark555

+0

Ho usato diverse versioni di xdebug, diversi client di debug. Ho installato xdebug via pecl e compilato da solo. Il problema deve essere da qualche parte all'interno della docker ufficiale immagine php –

+0

Che IDE stai usando? – bishop

risposta

1

penso che sia un errore da qualche parte nel XDebug - vedere questi bug report

Nel frattempo si può essere in grado di ordinare di aggirare il problema utilizzando il xdebug_break() funziona appena DOPO la linea che lancia l'eccezione e continua a eseguire il debug da lì. Ho provato a impostare un punto di interruzione sulla linea dopo che l'eccezione è stata lanciata e ho scoperto che un punto di interruzione non era sufficiente per impedirne l'emissione.

non è una soluzione perfetta, ma si spera quegli insetti avranno fisso presto

0

L'errore descritto può essere riprodotto solo le immagini ufficiali PHP5. Le immagini di PHP 7 funzionano bene e quando si crea un'immagine FPM PHP5 personalizzata da jessie o ubuntu, l'errore non si verifica.

Problemi correlati