为什么声明对象会使我的Ajax页面中的HTML无效?

Background: I am building an Ajax page which will be called by a user's browser to retrieve data already loaded in $_SESSION. I want to test that the Ajax page works properly so I am trying to do a print_r($_SESSION) on it. (Note: the print_r() works fine on the main site.)

Problem: I cannot get my PHP to produce valid HTML. If I do:

<?php
  header("Content-Type: text/html; charset=utf-8");
  echo '<?xml version="1.0" encoding="utf-8" ?>';
  if (!session_id()) {
    session_start();
  }
?>
<!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" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <!-- See http://www.w3.org/International/O-charset.en.php-->
    <title>Test for Ajax</title>
    <link rel="stylesheet" media="screen" type="text/css" title="StyleSheetProjet" href="StyleSheetProjet.css" />
  </head>
  <body>
      <pre>
      Content of $_SESSION:
      <?php print_r($_SESSION) ?>
      </pre>
  </body>
</html>

In which case the page shows:

Content of $_SESSION:
Array
(

followed by a bunch of __PHP_Incomplete_Class Object (because the objects in session have not been declared I assume).

However if I start with:

header("Content-Type: text/html; charset=utf-8");
echo '<?xml version="1.0" encoding="utf-8" ?>';
//Obects in session:
require_once("Class_User.php");
require_once ('Class_Message.php');
if (!session_id()) {
  session_start();
}
//(Rest is same as above)

Then the browser renders nothing at all, not even Content of $_SESSION:. In fact, the html in the web console is simply <html><head></head><body></body></html> with nothing in between...

What am I doing wrong?

Edit 1: to replace text/xml in the header() with text/html.

Edit 2: I replaced the two require_once with:

if (file_exists('Class_User.php')) {
  echo "Class_User exists";
} else {
  echo "Class_User doesn't exist";
}

if (file_exists('Class_Message.php')) {
  echo "Class_Message exists";
} else {
  echo "Class_Message doesn't exist";
}

The page does return Class_User existsClass_Message exists so it clearly can find the files.

Suspected Reason

require_once("Class_User.php"); and require_once("Class_Message.php"); are looking for the related files, cannot find them, so stop executing the rest of the code. Check if the path to Class_User.php and Class_Message.php are correct.

Actual Reason (we found working together w/ the OP after debugging)

One of the class files was extending another class and since that file was not included in the project the execution was being blocked. The OP solved the issue by calling another require() for this third class.