Ho uno script PHP in cui, ad un certo punto, chiamo exec() su un altro script PHP. Questo funziona perfettamente bene, ma si blocca quando si utilizza il debugger XDebug in NetBeans. Questo mi sta causando tutti i tipi di problemi, in quanto non riesco a eseguire il debug dell'intera applicazione.PHP Debugger si blocca quando chiama exec ('php ...')
Ecco un esempio banale:
test1.php
<?php
$output = array();
$status = 0;
exec('echo "Running inside test 1"', $output, $status);
exec('php ' . __DIR__ . '/test2.php', $output, $status); // Debugger hangs here
var_dump($output);
var_dump($status);
?>
test2.php
<?php
echo "Running inside test 2" . PHP_EOL;
?>
Se corsa test1.php, corre a compimento e produce il uscita prevista
Se I debug test1.php, si blocca sulla riga exec ('php ...').
Ho provato questo con shell_exec e ottenere lo stesso problema. Ho anche provato l'esecuzione su un file .sh o altro eseguibile, senza problemi.
All'inizio pensavo che xdebug fosse in qualche modo collegato al nuovo processo PHP avviato da exec e bloccandolo, ma ho controllato il mio php.ini e ho xdebug.remote_autostart=off
.
Sono consapevole che chiamare uno script PHP tramite exec() è uno strano modo di fare le cose; è in realtà un file PHAR fornito esternamente che stiamo eseguendo nel codice reale, ma l'esempio banale sopra ha lo stesso sintomo, quindi presumo che sia lo stesso problema.
Nel caso sia rilevante, sto usando PHP 5.5.13, Xdebug 2.2.3, Netbeans 7.3.1, Ubuntu 12.0.4.