Hi Guys,

When I am using XML version in the XHTML, then I am getting parser error [Parse error: parse error, unexpected T_STRING on line 1].

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
<title>Testing Page</title>
</head>
<body>
<p>Hi</p>
</body>
</html>

When I store the above code under .php extension, I am getting parser error.

Observations:
- When I stored the same code under .htm extension, I am not getting any error.
- When I remove the version and encoding and just use <?xml?> in the first line and use .php extension, I am not getting any error.

System:
Apache/2.0.50 (Win32)
PHP Version 4.3.8 [Build Date Jul 13 2004 17:31:56]

Can you please help in understand what is going on and why parser error. I like to use the version in XML just to conform with w3c.org XHTML standards.

I am giving this answer for future reference for somebody looking for the same answer.

The syntax is correct, but the following pages gave me the information I need:
http://www.php.net/manual/en/language.basic-syntax.php
http://www.php.net/manual/en/ini.sect.language-options.php#ini.short-open-tag

The answer is:
[1] Either disable short_open_tag in the php.ini. [But not always we have the option as webhosting company might not be willing to change.]
[2] The alternative is to use this

<?php echo("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); ?>

I am still looking for other solutions, but may do well to add this...

If the page is not being server-parsed I receive the same error.
So for instance, take a .htm file with the xml declaration,
when I add...
AddHandler server-parsed .htm
...the error goes away.

Cheers,
TwoHawks

This article has been dead for over six months. Start a new discussion instead.