Edit report at http://bugs.php.net/bug.php?id=54306&edit=1

 ID:                 54306
 Comment by:         carsten_sttgt at gmx dot de
 Reported by:        gingko at gingko dot homeip dot net
 Summary:            Parsing bug if a pattern looking like closing ASP
                     tag appears in comment
 Status:             Open
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   Linux Debian 5 'Lenny'
 PHP Version:        5.2.17
 Block user comment: N
 Private report:     N

 New Comment:

That's the normal behavior. See:

http://de.php.net/manual/en/language.basic-syntax.comments.php



"%>" is returning to HTML mode. But at this point the opened "{" from
the if is not closed, and it's not closed till the end of the file.
That's the error message.


Previous Comments:
------------------------------------------------------------------------
[2011-03-18 12:04:42] gingko at gingko dot homeip dot net

Description:
------------
A parsing error occurs if a pattern looking like a closing ASP tag
appears inside a line comment (beginning by '//'), in a PHP engine
having 'asp_tags = On' in the 'php.ini' file.



If I remove the "//" comment, I have a big "Line 2" visible, and there
is no bug.

If I use a "/* */" style comment instead, there is no bug.

If I put quotes around "140%" in the "size" attribute, there is no bug.

If I set the "asp_tags" options to "Off", or if I remove it, there is no
bug.

Removing the 'if' condition around the comment results in another kind
of problem (no error, but part of HTML code visible).



I found this because I was trying to install the latest version of OCS
Inventory (http://www.ocsinventory-ng.org/), and I didn't understand why
I got a white page and a PHP parse error after the first step of
installation: I have 'asp_tags = On' in 'php.ini', and there is
effectively a commented out '%>' pattern in their code.



Looks like a little to Bug #4879 (more than 10 years old).

Test script:
---------------
<html>

 <head><title>Asp tag bug</title></head>

 <body>

  Line 1<br>

<?php

  if (true) {

  //echo "<font size=140%>Line 2</font><br>";

  }

?>

  Line 3<br>

 </body>

</html>



Expected result:
----------------
Two text lines in browsers's Window :



"Line 1"

"Line 3"

Actual result:
--------------
A white page, and the following error in Apache log :

PHP Parse error:  syntax error, unexpected $end in
/var/www/[...]/asp_tag_bug.php on line 13


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=54306&edit=1

Reply via email to