Невозможно отобразить несколько строк вывода при использовании XDebug с Aptana и fwrite - PullRequest
1 голос
/ 17 августа 2010

При использовании Aptana с PHP 5.2.3 в режиме отладки (с помощью многопоточного XDebug 2.1.0 для PHP 5.2 VC6) для запуска простого многострочного скрипта hello world, я получаю некоторое ошибочное поведение на вкладке «Консоль» Aptana.

У меня есть сценарий hello_world.php, который содержит следующее:

<?php
$stdout = fopen('php://stdout', 'w');
fwrite($stdout, 'Hello world!');
fwrite($stdout, 'Hello world!2');
fwrite($stdout, 'Hello world!3');
fclose($stdout);
?>

Моя конфигурация отладки PHP в Aptana использует php.exe из папки c: \ wamp \ php вРежим CLI с XDebug в качестве отладчика.

Если я запускаю сеанс отладки и позволяю своему коду выполнить прямо, я получаю ожидаемый вывод (как и я, если я запускаю это из командной строки).

Если я покажу код, я увижу только первую строку («Hello world!») В разделе «Консоль» Aptana.На самом деле, я могу даже не увидеть первый «Hello world!»быстро переходя от строки fopen () к первой строке fwrite ().Если я сделаю паузу на 3–5 секунд после перехода через fopen (), а затем запускаю fwrite, я получу первый «Hello world!».

Само собой разумеется, это совершенно сбивает с толку.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация о моей конфигурации, и я буду рад предоставить ее!

Ура!Дункан

(Я на самом деле пытаюсь отладить сценарий оболочки CakePHP, который использует fwrite для stdout вместо echo ... но сначала я хочу решить эту проблему!)

1 Ответ

1 голос
/ 17 августа 2010

Я обнаружил, что следующее работает (благодаря первому комментарию):

$fp = fopen('php://output', 'w'); // Note, not: php://stdout
fwrite($fp, 'Hello world!');
flush();
fwrite($fp, 'Hello world!2');
flush();
fwrite($fp, 'Hello world!3');
flush();
fclose($fp);

?>

Это все еще не появляется вкладка «Консоль» в Aptana (Eclipse), просто в «Вывод отладки»вкладка, но у меня по крайней мере есть вывод.Скрипт также принимает аргументы, чего раньше не делал.

...