За последние 24 часа нас посетили 18958 программистов и 1606 роботов. Сейчас ищут 1012 программистов ...

Не правильно работает функция Header

Тема в разделе "Прочие вопросы по PHP", создана пользователем Fhcty, 14 июл 2009.

  1. Fhcty

    Fhcty Активный пользователь

    С нами с:
    14 июл 2009
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Irkutsk
    Никак понять не могу, в чем может быть проблема, почему не выполняется элементарный скрипт:

    PHP:
    1.  
    2. <?php
    3. header("HTTP/1.0 404 Not Found");
    4. ?>
    5.  
    При обработке скрипта выдает:

    Код (Text):
    1. Warning: Cannot modify header information - headers already sent by (output started at /home/wikiog/public_html/test.php:1) in /home/wikiog/public_html/test.php on line 4
    Посоветуйте в чем может быть проблема?
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Файл в utf-8?
     
  3. Fhcty

    Fhcty Активный пользователь

    С нами с:
    14 июл 2009
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Irkutsk
    Да, несколько раз проверил. Файл точно в utf-8
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    http://ru.wikipedia.org/wiki/%D0%AE%D0% ... 0%BE%D0%B4

    Порядок байтов

    В потоке данных UTF-16 старший байт может записываться либо перед младшим (UTF-16 Big Endian), либо после младшего (UTF-16 Little Endian). Иногда кодировку Юникода Big Endian (UTF-16BE) называют Юникодом с обратным порядком байтов. Аналогично существует два варианта четырёхбайтной кодировки — UTF-32BE и UTF-32LE.

    Для определения формата представления Юникода в текстовом файле используется приём, по которому в начале текста записывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. Byte Order Mark, BOM). Этот способ позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:

    UTF-8
    EF BB BF
    UTF-16BE
    FE FF
    UTF-16LE
    FF FE
    UTF-32BE
    00 00 FE FF
    UTF-32LE
    FF FE 00 00

    Файлы в кодировках UTF-16 и UTF-32, не содержащие BOM, должны иметь порядок байтов big-endian (unicode.org).

    К сожалению, этот способ не позволяет надёжно различать UTF-16LE и UTF-32LE, поскольку символ U+0000 допускается Юникодом (хотя реальные тексты редко начинаются с него).
     
  5. Fhcty

    Fhcty Активный пользователь

    С нами с:
    14 июл 2009
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Irkutsk
    Не совсем понял к чему все это, но за справочную информацию спасибо. В моем файле именно EF BB BF.
     
  6. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Надо сохранить файл без BOM в каком-нибудь редакторе, который это умеет.
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    vi ?

    =)
     
  8. Fhcty

    Fhcty Активный пользователь

    С нами с:
    14 июл 2009
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Irkutsk
    Хорошо, допустим все получилось, теперь без проблем отображает нужные ошибки.

    Но ведь это же геморой целый, ведь сервер должен сам как-то определять какая там кодировка или не должен?
    Просто в на некоторых серверах все работает, а вот на одном такая проблема образовалась.

    Это как-нибудь можно решить?
     
  9. kostyl

    kostyl Guest

     
  10. Fhcty

    Fhcty Активный пользователь

    С нами с:
    14 июл 2009
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Irkutsk
    kostyl
    Хорошо. Понял. Вернее не корректно задал вопрос.

    Почему на некоторых серверах PHP нормально относиться к EF BB BF, а вот этот (падла-сервер) критично отнесся и ни в какую не желает пропустить это.

    Вот у кого-нибудь есть концептуальные соображения как PHP заставить нормально читать файлы в кодировке UTF-8 c этими злощастными EF BB BF?
     
  11. Fhcty

    Fhcty Активный пользователь

    С нами с:
    14 июл 2009
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Irkutsk
    Считаю, что стоит добавить более корректный вопрос:
    Как PHP заставить игнорировать в UTF-8 BOM?
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    НИКАК
     
  13. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    вранье. он везде одинаково относится в BOM - а именно НИКАК!
     
  14. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0