Luego de mucho luchar ya hallamos la contestación de este apuro que algunos de nuestros usuarios de este espacio han tenido. Si tienes alguna información que compartir puedes compartir tu comentario.
Solución:
Ejecutándolo en PhpStorm, pero como Xdebug se ejecuta en PHP, el comportamiento es el mismo.
Xdebug se detiene cuando las cosas están “hechas”, en las líneas en las que las cosas están “hechas”. Pueden ser llamadas a funciones, asignaciones de variables, transformaciones de datos, etc. Todos ellos tienen en común que deben ser explícitos. Las asignaciones implícitas se ignoran.
Xdebug no detiene la ejecución de los puntos de interrupción colocados “en” una acción. Es por eso que el primer punto de interrupción en su código no trabajo, y el segundo lo hará.
Ejemplo explícito e implícito:
$attributes = [ // this is implicitly an array, no pausing execution
'business_name' => 'DANONE' // this is explicitly assigned a string, execution paused
];
Con algunas capturas de pantalla (el código es de Symfony 4 public/index.php
, con algunas adiciones obvias – el fondo azul es la ejecución en pausa “línea actual”):
Ejecutar claramente funciones dentro de un if()
declaración – hace una pausa
Como podemos ver, los puntos de interrupción en las 3 líneas de este array. Sin embargo, el único en el que se detiene es la asignación del key/ par valor. Esto se hace explícitamente, el array en sí mismo se declara implícitamente.
Aquí declaramos explícitamente $testArray
ser un array. Entonces: hace una pausa.
Esto debe estar completo, podría haberlo agregado arriba. Configuración implícita de tipo array, pero asignación explícita de key/valor.
Entonces sí.
Si hubiera colocado sus puntos de interrupción ligeramente diferentes, habrían pausado la ejecución. No detenerse en los implícitos es un comportamiento normal.
Estar Completo:
En la instalación local de Apache, tengo la siguiente configuración:
[XDEBUG]
zend_extension = C:xamppphpextphp_xdebug-2.7.1-7.3-vc15-x86_64.dll
xdebug.remote_mode = req
xdebug.remote_connect_back = 1
xdebug.default_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_enable = 1
xdebug.remote_port = 9000
xdebug.remote_handler = dbgp
xdebug.max_nesting_level = 200;
Pero normalmente ejecuto esto en Docker. En el docker-compose
Imagen PHP:
environment:
PHP_XDEBUG_ENABLED: $XDEBUG_ENABLED:-0
PHP_IDE_CONFIG: $PHP_IDE_CONFIG:-serverName=ProjectName
XDEBUG_CONFIG: >
idekey=PHPSTORM
remote_host=$XDEBUG_REMOTE_HOST_IP:-host.docker.internal
remote_port=$XDEBUG_REMOTE_PORT:-9000
remote_enable=1
- (para habilitar xdebug, establezca
XDEBUG_ENABLED
configuración del entorno para1
en aplicación al comenzar a usardocker-compose up
) - (reemplace “ProjectName” con el nombre del proyecto, use ese nombre en su configuración de “servidores” en la configuración de PhpStorm para Xdebug)
y en el Dockerfile
pecl install xdebug-2.7.2 redis &&
docker-php-ext-enable xdebug redis &&
- (asegúrese de reemplazar
xdebug-2.7.2
con una versión que desee / sea compatible con su versión de PHP, compruébelo aquí)
Editar: adicional basado en los comentarios sobre la pregunta de OP.
Hay muchos informes de errores (vea esos comentarios, mire a LazyOne por encontrarlos).
La última URL que proporcionó es interesante ya que se trata de la próxima V2.8.0 (actualmente en 2.8.0beta1, no en la versión general), sobre la cual comenta en este ticket que Xdebug no detiene la ejecución en las asignaciones implícitas:
Acabo de fusionar esto en la rama maestra, que se convertirá en parte de 2.8.0. Lanzaré 2.7.2 pronto (¿esta semana, hoy ?!), y probablemente la próxima semana una versión 2.8alpha1 para que la gente pueda probar esto.
(cita de 2019-05-06 12:49 por Derick, escritor de Xdebug)
Puede echar un vistazo a la página del registro de cambios o la hoja de ruta de Xdebug.
La hoja de ruta muestra todas las funciones / correcciones que se incluirán.
Para 2.8.0, muestra que se agregará soporte para IDE para que los IDE muestren si se puede resolver o no un punto de interrupción. Su fecha de lanzamiento actual está fijada para el 30-09-2019.
Liberado
Yo también enfrenté este problema, con laravel
, estoy publicando los pasos que hice para solucionar este problema Estoy usando laragon para PHP
agregué una nueva versión de php, también actualicé la ruta de PHP de los compositores (no sé si este paso es necesario, pero lo hice y señalé la última versión de PHP)
descargó xdebg.dll y lo colocó en la carpeta
configuración actualizada en php.ini
[xdebug]
zend_extension = D:lrgnbinphpphp-7.2.7extphp_xdebug-2.6.1-7.2-vc15-nts-x86_64.dll
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_connect_back = 1
;xdebug.remote_log= D:lrgnbinlogxdebug.log
no tengo xdebug.remote_port = 9000
en launch.json
"version": "0.2.0",
"configurations": [
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000
,
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "$file",
"cwd": "$fileDirname",
"port": 9000
]
en vscode
En Preferencias -> Configuración (ctrl
+,
)
Agregar / actualizar:
php.validate.executablePath: "D:lrgnbinphpphp-7.2.7php.exe"
(el mío estaba aquí)
Servidor reiniciado(laragon) detuvo laravel hizo una actualización del compositor en el proyecto (no estoy seguro si esta etapa requiere) comenzó el proyecto laravel nuevamente
en el navegador, abra el proyecto laravel
en vscode establece algunos puntos de freno incluso en métodos
en la sección de depuración -> Escuche XDebug
en el navegador recargó la página
si, es un golpe directo
No está disponible para romper por definido array en vscode
mi sugerencia es obtener un código if u otro, como este:
public function testCreateWhenAllParametersAreCorrectlySpecifiedReturnsCompany()
• $debug = 'true';
$attributes = [
'business_name' => 'DANONE'
];
$address = factory(Address::class)->create();
$company = Company::create($attributes, $address);
• $this->assertInstanceOf(Company::class, $company);
$this->assertDatabaseHas('companies', [
'address_id' => $address->id,
'business_name' => 'DANONE'
]);
y continuar con la prensa f10
botón
Acuérdate de que tienes autorización de explicar .