Моя версия PHP:
$ php -v
PHP 5.3.6 (cli) (built: Mar 17 2011 20:56:13)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans
Код, о котором идет речь:
$ echo -n "<?php" | php
<?php
Добавление еще рядом с <?php
:
$ echo -n "<?php/**/" | php
<?php/**/
или
$ echo -n "<?php;" | php
<?php;
и затем пробел:
$ echo -n "<?php " | php
(окончательно пустой вывод).
Эта версия PHP не дает мне сообщение типа Parse error: syntax error, unexpected $end
для приведенных выше примеров, но делает это так:
$ echo -n "<?php x" | php -d display_errors=1
Parse error: syntax error, unexpected $end in - on line 1
Надеюсь, это поможет. На мой взгляд, это выглядит так, что ввод обрабатывается так же, как текст, пока пробел не следует за открывающей последовательностью <?php
.