I believe the problem is that you should use $output = <<<END
instead of $output = <<< END
(Note the lack of space)
echo <<<END
heredoc string...
END;
Make sure that there is no space before or after the END
even a single extraneous space could cause problems. Looking at the code you posted, you seem to have a space before and after the END
.
From the php website:
Warning
It is very important to note that the
line with the closing identifier must
contain no other characters, except
possibly a semicolon (;). That means
especially that the identifier may not
be indented, and there may not be any
spaces or tabs before or after the
semicolon. It's also important to
realize that the first character
before the closing identifier must be
a newline as defined by the local
operating system. This is \n on UNIX
systems, including Mac OS X. The
closing delimiter (possibly followed
by a semicolon) must also be followed
by a newline.
If this rule is broken and the closing
identifier is not "clean", it will not
be considered a closing identifier,
and PHP will continue looking for one.
If a proper closing identifier is not
found before the end of the current
file, a parse error will result at the
last line.