2010-12-05 6 views
-1

привет Я только что закончил разработку сайта в PHP я у себя на сайте и получил следующее сообщение об ошибкесессий в PHP

Warning: session_start() [function.session-start]: Can not send session cookie - headers already sent by (output started "at/home/qualitr1/public_html/DemoEcolace/index.php: 2) in/home/qualitr1/public_html/DemoEcolace/index.php on line 2 

зная, что я не имел эту проблему локально на окнах код для мой файл выглядит следующим образом:

<? Php 
session_start(); 
?> 

ответ

3

причина, почему это происходит потому, что сессии используют куки и куки передаются через 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 
} 
2

Прежде всего, не должно быть пробелов между <? и php. Кроме того, проверьте начало файла для UTF-BoM (отметка байтового байта). Он невидим в текстовых редакторах, но он по-прежнему считается выходным, что приводит к ошибкам, подобным выше.

2

Перед началом сеанса не должно быть никаких выходов. Может быть, есть выход в index.php, строка 2. Если ваш документ закодирован в UTF-8, ваш php-файл должен быть закодирован в «UTF-8 без BOM».

0

Отправка файла cookie требует изменения HTTP-заголовка.И это возможно только в том случае, если оно еще не отправлено. И это происходит вообще, когда начинается вывод (явно или неявно).

Для того чтобы использовать файл cookie для сеанса, вам необходимо убедиться, что не было выхода до вызова session_start или что вывод еще не отправлен клиенту (см. output control).

Согласно сообщению об ошибке, выход начался с /home/qualitr1/public_html/DemoEcolace/index.php:. Поэтому взгляните на то, что происходит в этой строке, и предотвратите этот вывод (включая пробелы, такие как разрывы строк, пробелы, вкладки, а также возможный UTF BOM) или используйте выходной элемент управления для буферизации любого вывода, чтобы вы могли изменять заголовок HTTP, даже если там уже был какой-то выход.

Смежные вопросы