#31787 [Opn->Bgs]: Parse Error -- Comment of // slash slash fails to ignore script terminator
ID: 31787
Updated by: sniper@php.net
Reported By: codeslinger at compsalot dot com
-Status: Open
+Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Linux
PHP Version: 4.3.10
New Comment:
This is not discussion forum. Discuss on the mailing lists.
Documentation can be found at:
http://www.php.net/manual/en/language.basic-syntax.comments.php
Read the last paragraph on that page.
Previous Comments:
------------------------------------------------------------------------
[2005-02-03 18:49:00] codeslinger at compsalot dot com
Thank you for your response. But I wanted some further discussion on
this.
I spent a *lot* of time banging my head against the wall trying to
track down a nonsensical error message.
I took the totally legitimate statment of
fwrite($fp, "<?php echo 'Hello World'; ?>" );
And commented it out with //. And instead of ignoring the comment, php
decided to interpet it as a script close tag.
This bogus parsing behavior lead to major frustration and confusion;
and wasted time.
Now my understanding of // is that everything up to the end of the line
is supposed to be ignored. Not only is the ?> within a comment, but it
is also contained inside of quotes...
Why is the parser spinning it's wheels parsing the contents of a
comment, when all it needs to be doing is a skip to end of line?
------
Per your suggestion, I did a search for "html containment" I did not
find anything. I did find and read chapter 71, but saw nothing
applicable.
I have actually read quite a bit of the manual, but as you know it is
huge and navigation can be tricky, if you could give me a more specific
link I would appreciate it.
----------
Please understand that I LOVE PHP and I am very very greatful for all
the hard work that people have put in. I am not intending to be overly
critical.
------------------------------------------------------------------------
[2005-02-01 09:24:03] derick@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
Please read the docs on html containment - this is expected.
------------------------------------------------------------------------
[2005-02-01 00:46:55] codeslinger at compsalot dot com
I doubt it makes a difference, but this is the CLI version of php.
------------------------------------------------------------------------
[2005-02-01 00:36:23] codeslinger at compsalot dot com
Description:
------------
Here is a bizarre script parsing problem
The // comment operator is supposed to ignore everything on that line.
But if you happen to do something like
// fwrite($pipes[0], "<?php echo 'Hello World'; ?>" );
Then you start getting all kinds of strange parse errors.
I isolated the problem. What is happening is that
// ?>
or even // "?>"
is being interpeted as the script terminator.
Happily /* ?> */ does work
Reproduce code:
---------------
<?php
// ?>
echo "we get an error because it sees the ?> in the comment";
?>
# The above will fail, but this works
<?php
/*
?>
*/
echo "the ?> is properly ignored";
?>
Expected result:
----------------
anything and everything following a // to be ignored
Actual result:
--------------
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in
/foo/phpchild/parent1.php on line 29
Parse error: parse error, unexpected ')', expecting ',' or ';' in
/foo/phpchild/parent1.php on line 29
The actual error depends on the specific code following the termination
point.
This thing really had me baffeled for awhile...
I commented out several lines of code and started getting parse errors
about missing parens and semicolons, etc.
Depending upon what I commented out, the error would change, which made
it very hard to track down. Naturally I assumed I had made a mistake,
mismatched quotes etc. Took me quite a bit of head banging to finally
figure out what was going on.
=============
"Are you sure that you searched before you submitted your bug report?"
By the way.... You don't allow searching for specific characters such
as // and ?> this makes it very hard to check for duplicates of this
bug....
I note that your auto-dup detector did search for // in fact it did a
very impressive job of finding similar bugs. But no dups.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=31787&edit=1
Thread (8 messages)