причина, почему это происходит потому, что сессии используют куки и куки передаются через HTTP-заголовки, вы не можете отправить заголовки, если вы уже отправили содержимое в на веб-странице
ваш php ini указывает, что короткие теги включены, вместо этого вместо <?php
можно использовать <?
.
в качестве делания:
<? Php
session_start();
?>
ваша страница, вероятно, выплевывая текст ошибки, потому что если пространство между <?
и PHP там для начала сеанса не может быть начато.
вы всегда должны убедиться, что вы не рассылает содержимое, прежде чем позвонить sessions_start()
вы должны сделать:
<?php
session_start();
?>
Убедившись нет контента, до или после того, как теги PHP.
также как упомянуто другой пост есть возможность скрытого гольца под названием BOM, (Byte Order Mark), этот символ является невидимым и не может рассматриваться, но может существует.
если вы используете блокнот, например блокнот ++, тогда вы можете выбрать формат, а затем UTF-8 без спецификации.
если выше не решает вопрос, то вы можете создать небольшой скрипт для сканирования приложения для BOM символов:
просто найти рекурсивный инструмент, а затем для каждого файла PHP вы найдете вы можете сделать:
$bom = pack("CCC", 0xef, 0xbb, 0xbf);
, а затем проверить первые символов файла, как так:
if (0 == strncmp($str, $bom, 3))
{
//this file has BOM Char
}