the reason why this is happening is because sessions use cookies, and cookies are transferred via http headers, you cannot send headers if you have already sent content to the web page
your php ini specifies that short tags is on, there for instead of using <?php
your able to use <?
instead.
as your doing:
<? Php
session_start ();
?>
your page is probably spitting out some error text because if the space between <?
and php there for session start cannot be initiated.
you should always make sure that your not sending content before you call sessions_start()
you should do:
<?php
session_start();
?>
Making sure there is no content before or after the php tags.
also as mentioned by another post there's the possibility of a hidden char called BOM, (Byte order mark), this character is invisible and cannot be seen but may exists.
if your using a notepad such as notepad++ then you can select the Format then UTF-8 Without BOM.
if the above does not resolve the issue then you can create a small script to scan your application for BOM chars:
just find some recursive tool and then for each php file you find you can do:
$bom = pack("CCC", 0xef, 0xbb, 0xbf);
and then check the first 3 chars of the file like so:
if (0 == strncmp($str, $bom, 3))
{
//this file has BOM Char
}