Я на Ubuntu 14.04, с PHP 5.5.9. Там у меня очень простой файл a.php
:
<?php
$a = exec('clear');
print($a);
Если я запускаю скрипт, как сейчас, я получаю:
$ php a.php
<screen cleared> # nothing is displayed in the screen
# "clear" was performed successfully
Однако, если я прокомментирую print($a)
просто иметь такой файл:
<?php
$a = exec('clear');
тогда ничего не происходит
$ php a.php
$ # nothing happened, I see the previous line above
Насколько я понимаю, это вызов переменной $a
что делает clear
быть выполненным. Но это не имеет особого смысла, так как exec () документы говорит:
exec — выполнить внешнюю программу
Есть ли причина, почему clear
не выполняется, пока print()
называется?
Обратите внимание, что это связано с вопросом Очистить CMD-оболочку с php но я спрашиваю здесь Зачем Бывает.
На самом деле, clear выполняется при вызове exec. Вы просто не видите его действие на экране, пока вы на самом деле не выводите его.
Других решений пока нет …